Extrakce textu z dokumentů (PDF, textový editor, webové stránky atd.) má ve světě digitálních informací různé případy použití. Může být například použit pro analýzu dokumentů, provádění textové analýzy, vyhledávání informací, ukládání obsahu dokumentů do databází a tak dále. Pokud to zúžíme, PDF je jedním z nejpoužívanějších formátů dokumentů pro uchovávání a sdílení digitálních informací. Tato popularita dělá z dokumentů PDF obrovský zdroj informací. Proto by analýza nebo extrahování textu z dokumentů PDF mohla být zapojena do řady scénářů analýzy textu.
Aby bylo možné automatizovat analýzu PDF v aplikacích C++, tento článek ukazuje, jak extrahovat text z dokumentů PDF pomocí C++. Pokrývá následující scénáře extrakce textu:
- Extrahujte text z dokumentu PDF pomocí C++.
- Extrahujte text z konkrétních stránek v dokumentu PDF pomocí C++.
- Extrakce textu stránku po stránce z dokumentu PDF pomocí C++.
C++ PDF Reader a Text Extractor Library
Pro extrahování textu z dokumentů PDF budeme používat Aspose.PDF for C++, což je výkonná knihovna PDF pro vytváření, převod a analýzu dokumentů PDF. Soubory knihovny i ukázky běžícího kódu si můžete stáhnout ze sekce Stažení.
Extrahujte text z PDF pomocí C++
Aspose.PDF for C++ vám umožňuje analyzovat dokumenty PDF v několika jednoduchých krocích. Níže je uveden recept na extrahování textu z dokumentu PDF.
- Vytvořte objekt třídy PdfExtractor.
- Načtěte dokument PDF pomocí funkce PdfExtractor->BindPdf().
- Extrahujte text z dokumentu PDF do PdfExtractor pomocí funkce PdfExtractor->ExtractText().
- Uložte extrahovaný text do objektu MemoryStream.
- Přečtěte si text jako řetězec z MemoryStream.
Následující ukázka kódu ukazuje, jak extrahovat text z PDF pomocí C++.
auto extractor = MakeObject<Facades::PdfExtractor>();
// Svázat zdrojový dokument PDF
extractor->BindPdf(u"candy.pdf");
// Extrahujte text z PDF do PdfExtractor
extractor->ExtractText();
auto memStream = MakeObject<IO::MemoryStream>();
// Uložte text do paměti
extractor->GetText(memStream);
auto unicode = System::Text::Encoding::get_Unicode();
String allText = unicode->GetString(memStream->ToArray());
// Vytiskněte extrahovaný text
Console::WriteLine(u"Extracted text:");
Console::WriteLine(allText);
Extrahujte text z konkrétních stránek v PDF pomocí C++
Může nastat případ, kdy potřebujete extrahovat text pouze z několika stránek PDF. V takovém případě můžete určit rozsah stránek v PDF nastavením počátečních a koncových čísel stránek. Následují kroky k extrahování textu z konkrétních stránek v dokumentu PDF.
- Vytvořte objekt třídy PdfExtractor.
- Načtěte dokument PDF pomocí funkce PdfExtractor->BindPdf().
- Nastavte počáteční a koncové číslo stránky pomocí funkcí PdfExtractor->setStartPage() a PdfExtractor->setEndPage().
- Extrahujte text z PDF pomocí funkce PdfExtractor->ExtractText().
- Uložte extrahovaný text do objektu MemoryStream.
- Přečtěte si text jako řetězec z MemoryStream.
Následující ukázka kódu ukazuje, jak extrahovat text z konkrétních stránek PDF v C++.
auto extractor = MakeObject<Facades::PdfExtractor>();
// Svázat zdrojový dokument PDF
extractor->BindPdf(u"candy.pdf");
// Nastavte rozsah stránek
extractor->set_StartPage(2);
extractor->set_EndPage(2);
// Extrahujte text z PDF do PdfExtractor
extractor->ExtractText();
auto memStream = MakeObject<IO::MemoryStream>();
// Uložte text do paměti
extractor->GetText(memStream);
auto unicode = System::Text::Encoding::get_Unicode();
String allText = unicode->GetString(memStream->ToArray());
// Vytiskněte extrahovaný text
Console::WriteLine(u"Extracted text:");
Console::WriteLine(allText);
Extrahujte text stránky po stránce z PDF v C++
Místo extrahování celého textu z dokumentu PDF můžete extrahovat text z každé stránky dokumentu samostatně. Následují kroky k provedení extrakce textu stránku po stránce z PDF.
- Vytvořte objekt třídy PdfExtractor.
- Načtěte dokument PDF pomocí funkce PdfExtractor->BindPdf().
- Voláním funkce PdfExtractor->ExtractText() načtete text z dokumentu PDF do PdfExtractor.
- Procházejte každou stránku pomocí funkce PdfExtractor->HasNextPageText().
- Extrahujte text do proudu paměti pomocí funkce PdfExtractor->GetNextPageText().
- Přečtěte si text z paměti.
Následující ukázka kódu ukazuje, jak extrahovat text stránku po stránce z PDF v C++.
auto extractor = MakeObject<Facades::PdfExtractor>();
// Svázat zdrojový dokument PDF
extractor->BindPdf(u"candy.pdf");
// Extrahujte text z PDF do 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;
// Zadejte typ kódování Unicode v konstruktoru StreamReader
auto streamReader = MakeObject<StreamReader>(memStream, unicode);
streamReader->get_BaseStream()->Seek(0, SeekOrigin::Begin);
text = streamReader->ReadToEnd();
streamReader->Dispose();
// Vytiskněte extrahovaný text
std::cout << "Page: " << pageNumber << "\n";
Console::Write(text);
std::cout << "\n------------------------\n";
pageNumber++;
}
Další informace o Aspose.PDF for C++
Více o Aspose.PDF for C++ můžete prozkoumat pomocí dokumentace.