Виділення тексту з документів (PDF, текстовий редактор, веб-сторінки тощо) має різноманітні варіанти використання у світі цифрової інформації. Наприклад, його можна використовувати для аналізу документів, аналізу тексту, пошуку інформації, зберігання вмісту документів у базах даних тощо. Якщо ми звузимо його, то PDF є одним із найпоширеніших форматів документів для зберігання та обміну цифровою інформацією. Ця популярність робить PDF-документи величезним джерелом інформації. Таким чином, розбір або вилучення тексту з PDF-документів може бути залучено до низки сценаріїв аналізу тексту.
Щоб автоматизувати розбір PDF-файлів у програмах C++, у цій статті показано, як видобувати текст із документів PDF за допомогою C++. Він охоплює такі сценарії вилучення тексту:
- Витягніть текст із документа PDF за допомогою C++.
- Витягніть текст із певних сторінок документа PDF за допомогою C++.
- Посторінкове вилучення тексту з документа PDF за допомогою C++.
C++ PDF Reader і Text Extractor Library
Для отримання тексту з 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 for C++
Ви можете дізнатися більше про Aspose.PDF for C++ за допомогою документації.