يحتوي استخراج النص من المستندات (PDF ، ومعالجة الكلمات ، وصفحات الويب ، وما إلى ذلك) على مجموعة متنوعة من حالات الاستخدام في عالم المعلومات الرقمية. على سبيل المثال ، يمكن استخدامه لتحليل المستندات وإجراء تحليل النص واسترجاع المعلومات وتخزين محتوى المستندات في قواعد البيانات وما إلى ذلك. إذا قمنا بتضييقه ، فإن PDF هو أحد أكثر تنسيقات المستندات استخدامًا للاحتفاظ بالمعلومات الرقمية ومشاركتها. هذه الشعبية تجعل مستندات PDF مصدرًا ضخمًا للمعلومات. لذلك ، يمكن أن يكون تحليل النص أو استخراجه من مستندات PDF متضمنًا في عدد من سيناريوهات تحليل النص.
من أجل أتمتة تحليل PDF في تطبيقات C++ ، توضح هذه المقالة كيفية استخراج النص من مستندات PDF باستخدام C++. يغطي سيناريوهات استخراج النص التالية:
- استخراج نص من مستند PDF باستخدام C++.
- استخراج نص من صفحات معينة في مستند PDF باستخدام C++.
- استخراج نص صفحة بصفحة من مستند PDF باستخدام C++.
قارئ C++ PDF ومكتبة مستخرج النصوص
لاستخراج النص من مستندات PDF ، سنستخدم Aspose.PDF for C++ وهي مكتبة PDF قوية لإنشاء مستندات PDF وتحويلها وتحليلها. يمكنك تنزيل ملفات المكتبة بالإضافة إلى نماذج التعليمات البرمجية قيد التشغيل من قسم التنزيلات.
استخراج نص من ملف PDF باستخدام C++
يتيح لك Aspose.PDF for C++ تحليل مستندات PDF في بضع خطوات بسيطة. فيما يلي وصفة لاستخراج نص من مستند PDF.
- قم بإنشاء كائن من فئة PdfExtractor.
- قم بتحميل مستند PDF باستخدام وظيفة PdfExtractor-> BindPdf().
- استخرج النص من مستند PDF إلى PdfExtractor باستخدام وظيفة PdfExtractor-> ExtractText().
- احفظ النص المستخرج في كائن 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() على التوالي.
- استخرج النص من ملف PDF باستخدام وظيفة PdfExtractor-> ExtractText().
- احفظ النص المستخرج في كائن 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.
- قم بإنشاء كائن من فئة PdfExtractor.
- قم بتحميل مستند PDF باستخدام وظيفة PdfExtractor-> BindPdf().
- استدعاء وظيفة PdfExtractor-> ExtractText() لاسترداد النص من مستند PDF إلى PdfExtractor.
- تكرار كل صفحة باستخدام وظيفة PdfExtractor-> HasNextPageText().
- استخراج النص إلى دفق الذاكرة باستخدام وظيفة PdfExtractor-> GetNextPageText().
- قراءة نص من تدفق الذاكرة.
يوضح نموذج التعليمات البرمجية التالي كيفية استخراج نص صفحة بصفحة من 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;
// حدد نوع ترميز Unicode في مُنشئ 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++ باستخدام التوثيق.