متن را از PDF C++ استخراج کنید

استخراج متن از اسناد (PDF، واژه پردازی، صفحات وب و …) کاربردهای متنوعی در دنیای اطلاعات دیجیتال دارد. به عنوان مثال، می توان از آن برای تجزیه اسناد، انجام تجزیه و تحلیل متن، بازیابی اطلاعات، ذخیره محتوای اسناد در پایگاه های داده و غیره استفاده کرد. اگر آن را محدود کنیم، PDF یکی از پرکاربردترین قالب‌های سند برای نگهداری و اشتراک‌گذاری اطلاعات دیجیتال است. این محبوبیت اسناد PDF را به منبع عظیمی از اطلاعات تبدیل می کند. بنابراین، تجزیه یا استخراج متن از اسناد PDF احتمالاً می تواند در تعدادی از سناریوهای تجزیه و تحلیل متن دخالت داشته باشد.

به منظور خودکارسازی تجزیه PDF در برنامه های C++، این مقاله نحوه استخراج متن از اسناد PDF با استفاده از C++ را نشان می دهد. این سناریوهای استخراج متن زیر را پوشش می دهد:

  • متن را از یک سند PDF با استفاده از C++ استخراج کنید.
  • متن را از صفحات خاص در یک سند PDF با استفاده از C++ استخراج کنید.
  • استخراج متن صفحه به صفحه از یک سند PDF با استفاده از C++.

C++ PDF Reader و کتابخانه استخراج متن

برای استخراج متن از اسناد PDF، ما از Aspose.PDF برای C++ استفاده خواهیم کرد که یک کتابخانه PDF قدرتمند برای ایجاد، تبدیل و تجزیه اسناد PDF است. می توانید فایل های کتابخانه و همچنین نمونه کدهای در حال اجرا را از بخش [دانلودها] دانلود کنید.

با استفاده از C++ متن را از PDF استخراج کنید

Aspose.PDF for C++ به شما امکان می دهد اسناد PDF را در چند مرحله ساده تجزیه کنید. در زیر دستور استخراج متن از یک سند PDF ارائه شده است.

  • یک شی از کلاس PdfExtractor ایجاد کنید.
  • سند PDF را با استفاده از تابع PdfExtractor->BindPdf() بارگیری کنید.
  • با استفاده از تابع PdfExtractor->ExtractText() متن را از سند PDF به PdfExtractor استخراج کنید.
  • متن استخراج شده را در یک شی MemoryStream ذخیره کنید.
  • متن را به عنوان رشته از MemoryStream بخوانید.

نمونه کد زیر نحوه استخراج متن از PDF با استفاده از C++ را نشان می دهد.

auto extractor = MakeObject<Facades::PdfExtractor>();
// سند PDF منبع را پیوند دهید
extractor->BindPdf(u"candy.pdf");
// متن را از PDF به PdfExtractor استخراج کنید
extractor->ExtractText();
auto memStream = MakeObject<IO::MemoryStream>();
// متن را در جریان حافظه ذخیره کنید
extractor->GetText(memStream);
auto unicode = System::Text::Encoding::get_Unicode();
String allText = unicode->GetString(memStream->ToArray());
// متن استخراج شده را چاپ کنید
Console::WriteLine(u"Extracted text:");
Console::WriteLine(allText);

متن را از صفحات خاص در PDF با استفاده از C++ استخراج کنید

ممکن است موردی وجود داشته باشد که شما نیاز به استخراج متن فقط از چند صفحه PDF داشته باشید. برای چنین حالتی، می توانید با تنظیم شماره صفحه شروع و پایان، محدوده ای از صفحات را در PDF مشخص کنید. مراحل زیر برای استخراج متن از صفحات خاص در یک سند PDF است.

  • یک شی از کلاس PdfExtractor ایجاد کنید.
  • سند PDF را با استفاده از تابع PdfExtractor->BindPdf() بارگیری کنید.
  • شماره صفحه شروع و پایان را به ترتیب با استفاده از توابع PdfExtractor->setStartPage() و PdfExtractor->setEndPage() تنظیم کنید.
  • با استفاده از تابع PdfExtractor->ExtractText() متن را از PDF استخراج کنید.
  • متن استخراج شده را در یک شی MemoryStream ذخیره کنید.
  • متن را به عنوان رشته از MemoryStream بخوانید.

نمونه کد زیر نحوه استخراج متن از صفحات خاص PDF در C++ را نشان می دهد.

auto extractor = MakeObject<Facades::PdfExtractor>();
// سند PDF منبع را پیوند دهید
extractor->BindPdf(u"candy.pdf");
// محدوده صفحه را تنظیم کنید
extractor->set_StartPage(2);
extractor->set_EndPage(2);
// متن را از PDF به PdfExtractor استخراج کنید
extractor->ExtractText();
auto memStream = MakeObject<IO::MemoryStream>();
// متن را در جریان حافظه ذخیره کنید
extractor->GetText(memStream);
auto unicode = System::Text::Encoding::get_Unicode();
String allText = unicode->GetString(memStream->ToArray());
// متن استخراج شده را چاپ کنید
Console::WriteLine(u"Extracted text:");
Console::WriteLine(allText);

متن صفحه به صفحه را از PDF در C++ استخراج کنید

به جای استخراج تمام متن از یک سند PDF، می توانید متن را از هر صفحه سند به طور جداگانه استخراج کنید. مراحل زیر برای انجام استخراج متن صفحه به صفحه از PDF است.

نمونه کد زیر نحوه استخراج متن صفحه به صفحه از PDF در C++ را نشان می دهد.

auto extractor = MakeObject<Facades::PdfExtractor>();
// سند PDF منبع را پیوند دهید
extractor->BindPdf(u"candy.pdf");
// متن را از PDF به 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;
	// نوع رمزگذاری یونیکد را در سازنده StreamReader مشخص کنید
	auto streamReader = MakeObject<StreamReader>(memStream, unicode);
	streamReader->get_BaseStream()->Seek(0, SeekOrigin::Begin);
	text = streamReader->ReadToEnd();
	streamReader->Dispose();
	// متن استخراج شده را چاپ کنید
	std::cout << "Page: " << pageNumber << "\n";
	Console::Write(text);
	std::cout << "\n------------------------\n";
	pageNumber++;
}

درباره Aspose.PDF برای C++ بیشتر بدانید

می توانید با استفاده از مستندات درباره Aspose.PDF برای C++ بیشتر کاوش کنید.

همچنین ببینید