A extração de texto de documentos (PDF, processamento de texto, páginas da web, etc.) tem uma variedade de casos de uso no mundo da informação digital. Por exemplo, ele pode ser usado para analisar documentos, realizar análise de texto, recuperação de informações, armazenar o conteúdo dos documentos em bancos de dados e assim por diante. Se restringirmos, o PDF é um dos formatos de documento mais usados para manter e compartilhar informações digitais. Essa popularidade torna os documentos PDF uma grande fonte de informações. Portanto, analisar ou extrair texto de documentos PDF pode estar envolvido em vários cenários de análise de texto.
Para automatizar a análise de PDF em aplicativos C++, este artigo demonstra como extrair texto de documentos PDF usando C++. Abrange os seguintes cenários de extração de texto:
- Extraia texto de um documento PDF usando C++.
- Extraia texto de páginas específicas em um documento PDF usando C++.
- Extração de texto página por página de um documento PDF usando C++.
Biblioteca C++ PDF Reader e Text Extractor
Para extrair texto de documentos PDF, usaremos Aspose.PDF for C++, que é uma poderosa biblioteca PDF para criar, converter e analisar documentos PDF. Você pode baixar os arquivos de biblioteca, bem como os exemplos de código em execução na seção Downloads.
Extrair texto de PDF usando C++
O Aspose.PDF para C++ permite analisar os documentos PDF em algumas etapas simples. A seguir está a receita para extrair texto de um documento PDF.
- Crie um objeto da classe PdfExtractor.
- Carregue o documento PDF usando a função PdfExtractor->BindPdf().
- Extraia o texto do documento PDF para PdfExtractor usando a função PdfExtractor->ExtractText().
- Salve o texto extraído em um objeto MemoryStream.
- Leia o texto como string de MemoryStream.
O exemplo de código a seguir mostra como extrair texto de um PDF usando C++.
auto extractor = MakeObject<Facades::PdfExtractor>();
// Vincular documento PDF de origem
extractor->BindPdf(u"candy.pdf");
// Extraia texto de PDF para PDFExtractor
extractor->ExtractText();
auto memStream = MakeObject<IO::MemoryStream>();
// Salvar texto no fluxo de memória
extractor->GetText(memStream);
auto unicode = System::Text::Encoding::get_Unicode();
String allText = unicode->GetString(memStream->ToArray());
// Imprimir texto extraído
Console::WriteLine(u"Extracted text:");
Console::WriteLine(allText);
Extraia texto de páginas específicas em PDF usando C++
Pode ser o caso de você precisar extrair texto apenas de algumas páginas de PDF. Nesse caso, você pode especificar um intervalo de páginas no PDF definindo os números de página inicial e final. A seguir estão as etapas para extrair texto de páginas específicas em um documento PDF.
- Crie um objeto da classe PdfExtractor.
- Carregue o documento PDF usando a função PdfExtractor->BindPdf().
- Defina o número da página inicial e final usando as funções PdfExtractor->setStartPage() e PdfExtractor->setEndPage(), respectivamente.
- Extraia o texto do PDF usando a função PdfExtractor->ExtractText().
- Salve o texto extraído em um objeto MemoryStream.
- Leia o texto como string de MemoryStream.
O exemplo de código a seguir mostra como extrair texto de páginas específicas de PDF em C++.
auto extractor = MakeObject<Facades::PdfExtractor>();
// Vincular documento PDF de origem
extractor->BindPdf(u"candy.pdf");
// Definir intervalo de páginas
extractor->set_StartPage(2);
extractor->set_EndPage(2);
// Extraia texto de PDF para PDFExtractor
extractor->ExtractText();
auto memStream = MakeObject<IO::MemoryStream>();
// Salvar texto no fluxo de memória
extractor->GetText(memStream);
auto unicode = System::Text::Encoding::get_Unicode();
String allText = unicode->GetString(memStream->ToArray());
// Imprimir texto extraído
Console::WriteLine(u"Extracted text:");
Console::WriteLine(allText);
Extrair texto página por página de PDF em C++
Em vez de extrair todo o texto de um documento PDF, você pode extrair o texto de cada página do documento separadamente. A seguir estão as etapas para executar a extração de texto página por página do PDF.
- Crie um objeto da classe PdfExtractor.
- Carregue o documento PDF usando a função PdfExtractor->BindPdf().
- Chame a função PdfExtractor->ExtractText() para recuperar o texto do documento PDF para o PdfExtractor.
- Percorra todas as páginas usando a função PdfExtractor->HasNextPageText().
- Extraia o texto no fluxo de memória usando a função PdfExtractor->GetNextPageText().
- Leia o texto do fluxo de memória.
O exemplo de código a seguir mostra como extrair texto página por página de PDF em C++.
auto extractor = MakeObject<Facades::PdfExtractor>();
// Vincular documento PDF de origem
extractor->BindPdf(u"candy.pdf");
// Extraia texto de PDF para 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;
// Especifique o tipo de codificação Unicode no construtor StreamReader
auto streamReader = MakeObject<StreamReader>(memStream, unicode);
streamReader->get_BaseStream()->Seek(0, SeekOrigin::Begin);
text = streamReader->ReadToEnd();
streamReader->Dispose();
// Imprimir texto extraído
std::cout << "Page: " << pageNumber << "\n";
Console::Write(text);
std::cout << "\n------------------------\n";
pageNumber++;
}
Saiba mais sobre o Aspose.PDF para C++
Você pode explorar mais sobre o Aspose.PDF para C++ usando a documentação.