Trích xuất văn bản từ PDF C++

Trích xuất văn bản từ tài liệu (PDF, xử lý văn bản, trang web, v.v.) có nhiều trường hợp sử dụng trong thế giới thông tin kỹ thuật số. Ví dụ: nó có thể được sử dụng để phân tích tài liệu, thực hiện phân tích văn bản, truy xuất thông tin, lưu trữ nội dung của tài liệu vào cơ sở dữ liệu, v.v. Nếu chúng ta thu hẹp phạm vi, thì PDF là một trong những định dạng tài liệu được sử dụng rộng rãi nhất để lưu giữ và chia sẻ thông tin kỹ thuật số. Sự phổ biến này làm cho các tài liệu PDF trở thành một nguồn thông tin khổng lồ. Do đó, việc phân tích cú pháp hoặc trích xuất văn bản từ tài liệu PDF có thể liên quan đến một số tình huống phân tích văn bản.

Để tự động hóa việc phân tích cú pháp PDF trong các ứng dụng C++, bài viết này trình bày cách trích xuất văn bản từ tài liệu PDF bằng C++. Nó bao gồm các tình huống trích xuất văn bản sau:

  • Trích xuất văn bản từ tài liệu PDF bằng C++.
  • Trích xuất văn bản từ các trang cụ thể trong tài liệu PDF bằng C++.
  • Trích xuất từng trang văn bản từ tài liệu PDF bằng C++.

Thư viện trích xuất văn bản và trình đọc PDF C++

Để trích xuất văn bản từ tài liệu PDF, chúng tôi sẽ sử dụng Aspose.PDF for C++, một thư viện PDF mạnh mẽ để tạo, chuyển đổi và phân tích cú pháp tài liệu PDF. Bạn có thể tải xuống các tệp thư viện cũng như các mẫu mã đang chạy từ phần Tải xuống.

Trích xuất văn bản từ PDF bằng C++

Aspose.PDF for C++ cho phép bạn phân tích cú pháp các tài liệu PDF trong một vài bước đơn giản. Sau đây là công thức trích xuất văn bản từ tài liệu PDF.

Mẫu mã sau đây cho biết cách trích xuất văn bản từ tệp PDF bằng C++.

auto extractor = MakeObject<Facades::PdfExtractor>();
// Liên kết nguồn tài liệu PDF
extractor->BindPdf(u"candy.pdf");
// Trích xuất văn bản từ PDF sang PdfExtractor
extractor->ExtractText();
auto memStream = MakeObject<IO::MemoryStream>();
// Lưu văn bản vào dòng bộ nhớ
extractor->GetText(memStream);
auto unicode = System::Text::Encoding::get_Unicode();
String allText = unicode->GetString(memStream->ToArray());
// In văn bản trích xuất
Console::WriteLine(u"Extracted text:");
Console::WriteLine(allText);

Trích xuất văn bản từ các trang cụ thể trong PDF bằng C++

Có thể xảy ra trường hợp bạn chỉ cần trích xuất văn bản từ một vài trang PDF. Đối với trường hợp như vậy, bạn có thể chỉ định phạm vi trang trong PDF bằng cách đặt số trang bắt đầu và trang kết thúc. Sau đây là các bước để trích xuất văn bản từ các trang cụ thể trong tài liệu PDF.

Mẫu mã sau đây cho biết cách trích xuất văn bản từ các trang PDF cụ thể trong C++.

auto extractor = MakeObject<Facades::PdfExtractor>();
// Liên kết nguồn tài liệu PDF
extractor->BindPdf(u"candy.pdf");
// Đặt phạm vi trang
extractor->set_StartPage(2);
extractor->set_EndPage(2);
// Trích xuất văn bản từ PDF sang PdfExtractor
extractor->ExtractText();
auto memStream = MakeObject<IO::MemoryStream>();
// Lưu văn bản vào dòng bộ nhớ
extractor->GetText(memStream);
auto unicode = System::Text::Encoding::get_Unicode();
String allText = unicode->GetString(memStream->ToArray());
// In văn bản trích xuất
Console::WriteLine(u"Extracted text:");
Console::WriteLine(allText);

Trích xuất từng trang văn bản từ PDF trong C++

Thay vì trích xuất tất cả văn bản từ tài liệu PDF, bạn có thể trích xuất văn bản từ từng trang của tài liệu một cách riêng biệt. Sau đây là các bước để thực hiện trích xuất văn bản từng trang từ PDF.

Mẫu mã sau đây cho biết cách trích xuất từng trang văn bản từ PDF trong C++.

auto extractor = MakeObject<Facades::PdfExtractor>();
// Liên kết nguồn tài liệu PDF
extractor->BindPdf(u"candy.pdf");
// Trích xuất văn bản từ PDF sang PdfExtractor
extractor->ExtractText();
auto unicode = System::Text::Encoding::get_Unicode();
int pageNumber = 1; 

while (extractor->HasNextPageText())
{
	auto memStream = MakeObject<IO::MemoryStream>();
	extractor->GetNextPageText(memStream);
	String text;
	// Chỉ định loại mã hóa Unicode trong hàm tạo StreamReader
	auto streamReader = MakeObject<StreamReader>(memStream, unicode);
	streamReader->get_BaseStream()->Seek(0, SeekOrigin::Begin);
	text = streamReader->ReadToEnd();
	streamReader->Dispose();
	// In văn bản trích xuất
	std::cout << "Page: " << pageNumber << "\n";
	Console::Write(text);
	std::cout << "\n------------------------\n";
	pageNumber++;
}

Tìm hiểu thêm về Aspose.PDF for C++

Bạn có thể khám phá thêm về Aspose.PDF for C++ bằng cách sử dụng tài liệu.

Xem thêm