L’estrazione di testo da documenti (PDF, elaborazione testi, pagine Web, ecc.) ha una varietà di casi d’uso nel mondo dell’informazione digitale. Ad esempio, può essere utilizzato per analizzare documenti, eseguire analisi del testo, recuperare informazioni, archiviare il contenuto dei documenti in database e così via. Se restringiamo il campo, il PDF è uno dei formati di documenti più utilizzati per conservare e condividere informazioni digitali. Questa popolarità rende i documenti PDF un’enorme fonte di informazioni. Pertanto, l’analisi o l’estrazione di testo da documenti PDF potrebbe essere coinvolta in una serie di scenari di analisi del testo.
Per automatizzare l’analisi PDF nelle applicazioni C++, questo articolo mostra come estrarre testo da documenti PDF usando C++. Copre i seguenti scenari di estrazione del testo:
- Estrai testo da un documento PDF usando C++.
- Estrai testo da pagine particolari in un documento PDF usando C++.
- Estrazione di testo pagina per pagina da un documento PDF utilizzando C++.
Lettore PDF C++ e libreria di estrazione di testo
Per estrarre testo da documenti PDF, utilizzeremo Aspose.PDF for C++ che è una potente libreria PDF per creare, convertire e analizzare documenti PDF. Puoi scaricare i file della libreria e gli esempi di codice in esecuzione dalla sezione Download.
Estrai testo da PDF usando C++
Aspose.PDF per C++ ti consente di analizzare i documenti PDF in pochi semplici passaggi. Quella che segue è la ricetta per estrarre il testo da un documento PDF.
- Crea un oggetto della classe PdfExtractor.
- Carica il documento PDF utilizzando la funzione PdfExtractor->BindPdf().
- Estrarre il testo dal documento PDF in PdfExtractor utilizzando la funzione PdfExtractor->ExtractText().
- Salva il testo estratto in un oggetto MemoryStream.
- Leggi il testo come stringa da MemoryStream.
L’esempio di codice seguente mostra come estrarre il testo da un PDF usando C++.
auto extractor = MakeObject<Facades::PdfExtractor>();
// Associa il documento PDF di origine
extractor->BindPdf(u"candy.pdf");
// Estrai testo da PDF a PdfExtractor
extractor->ExtractText();
auto memStream = MakeObject<IO::MemoryStream>();
// Salva il testo nel flusso di memoria
extractor->GetText(memStream);
auto unicode = System::Text::Encoding::get_Unicode();
String allText = unicode->GetString(memStream->ToArray());
// Stampa il testo estratto
Console::WriteLine(u"Extracted text:");
Console::WriteLine(allText);
Estrai testo da pagine particolari in PDF usando C++
Potrebbe verificarsi il caso in cui è necessario estrarre il testo solo da alcune pagine del PDF. In tal caso, è possibile specificare un intervallo di pagine in PDF impostando i numeri di pagina iniziale e finale. Di seguito sono riportati i passaggi per estrarre il testo da pagine particolari in un documento PDF.
- Crea un oggetto della classe PdfExtractor.
- Carica il documento PDF utilizzando la funzione PdfExtractor->BindPdf().
- Impostare il numero di pagina iniziale e finale utilizzando rispettivamente le funzioni PdfExtractor->setStartPage() e PdfExtractor->setEndPage().
- Estrarre il testo dal PDF utilizzando la funzione PdfExtractor->ExtractText().
- Salva il testo estratto in un oggetto MemoryStream.
- Leggi il testo come stringa da MemoryStream.
L’esempio di codice seguente mostra come estrarre testo da pagine particolari di PDF in C++.
auto extractor = MakeObject<Facades::PdfExtractor>();
// Associa il documento PDF di origine
extractor->BindPdf(u"candy.pdf");
// Imposta intervallo di pagine
extractor->set_StartPage(2);
extractor->set_EndPage(2);
// Estrai testo da PDF a PdfExtractor
extractor->ExtractText();
auto memStream = MakeObject<IO::MemoryStream>();
// Salva il testo nel flusso di memoria
extractor->GetText(memStream);
auto unicode = System::Text::Encoding::get_Unicode();
String allText = unicode->GetString(memStream->ToArray());
// Stampa il testo estratto
Console::WriteLine(u"Extracted text:");
Console::WriteLine(allText);
Estrai il testo pagina per pagina da PDF in C++
Invece di estrarre tutto il testo da un documento PDF, puoi estrarre il testo da ogni pagina del documento separatamente. Di seguito sono riportati i passaggi per eseguire l’estrazione del testo pagina per pagina dal PDF.
- Crea un oggetto della classe PdfExtractor.
- Carica il documento PDF utilizzando la funzione PdfExtractor->BindPdf().
- Chiama la funzione PdfExtractor->ExtractText() per recuperare il testo dal documento PDF a PdfExtractor.
- Scorri ogni pagina usando la funzione PdfExtractor->HasNextPageText().
- Estrai il testo nel flusso di memoria usando la funzione PdfExtractor->GetNextPageText().
- Legge il testo dal flusso di memoria.
L’esempio di codice seguente mostra come estrarre il testo pagina per pagina da PDF in C++.
auto extractor = MakeObject<Facades::PdfExtractor>();
// Associa il documento PDF di origine
extractor->BindPdf(u"candy.pdf");
// Estrai testo da PDF a 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;
// Specificare il tipo di codifica Unicode nel costruttore StreamReader
auto streamReader = MakeObject<StreamReader>(memStream, unicode);
streamReader->get_BaseStream()->Seek(0, SeekOrigin::Begin);
text = streamReader->ReadToEnd();
streamReader->Dispose();
// Stampa il testo estratto
std::cout << "Page: " << pageNumber << "\n";
Console::Write(text);
std::cout << "\n------------------------\n";
pageNumber++;
}
Ulteriori informazioni su Aspose.PDF per C++
Puoi esplorare di più su Aspose.PDF per C++ usando la documentazione.