Extraer texto de PDF C++

La extracción de texto de documentos (PDF, procesadores de texto, páginas web, etc.) tiene una variedad de casos de uso en el mundo de la información digital. Por ejemplo, se puede utilizar para analizar documentos, realizar análisis de texto, recuperar información, almacenar contenido de documentos en bases de datos, etc. Si lo limitamos, PDF es uno de los formatos de documentos más utilizados para guardar y compartir información digital. Esta popularidad hace que los documentos PDF sean una gran fuente de información. Por lo tanto, el análisis o la extracción de texto de documentos PDF posiblemente podría estar involucrado en una serie de escenarios de análisis de texto.

Para automatizar el análisis de PDF en aplicaciones C++, este artículo demuestra cómo extraer texto de documentos PDF usando C++. Cubre los siguientes escenarios de extracción de texto:

  • Extrae texto de un documento PDF usando C++.
  • Extrae texto de páginas particulares en un documento PDF usando C++.
  • Extracción de texto página por página de un documento PDF usando C++.

Lector de PDF C++ y biblioteca de extracción de texto

Para extraer texto de documentos PDF, usaremos Aspose.PDF for C++, que es una poderosa biblioteca de PDF para crear, convertir y analizar documentos PDF. Puede descargar los archivos de la biblioteca, así como los ejemplos de código en ejecución, desde la sección Descargas.

Extraer texto de PDF usando C++

Aspose.PDF for C++ le permite analizar los documentos PDF en unos simples pasos. La siguiente es la receta para extraer texto de un documento PDF.

El siguiente ejemplo de código muestra cómo extraer texto de un PDF usando C++.

auto extractor = MakeObject<Facades::PdfExtractor>();
// Enlazar documento PDF de origen
extractor->BindPdf(u"candy.pdf");
// Extraer texto de PDF a PdfExtractor
extractor->ExtractText();
auto memStream = MakeObject<IO::MemoryStream>();
// Guardar texto en flujo de memoria
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);

Extraiga texto de páginas particulares en PDF usando C++

Podría darse el caso de que necesite extraer texto de unas pocas páginas de PDF únicamente. Para tal caso, puede especificar un rango de páginas en PDF configurando los números de página inicial y final. Los siguientes son los pasos para extraer texto de páginas particulares en un documento PDF.

El siguiente ejemplo de código muestra cómo extraer texto de páginas particulares de PDF en C++.

auto extractor = MakeObject<Facades::PdfExtractor>();
// Enlazar documento PDF de origen
extractor->BindPdf(u"candy.pdf");
// Establecer rango de página
extractor->set_StartPage(2);
extractor->set_EndPage(2);
// Extraer texto de PDF a PdfExtractor
extractor->ExtractText();
auto memStream = MakeObject<IO::MemoryStream>();
// Guardar texto en flujo de memoria
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);

Extraer texto página por página de un PDF en C++

En lugar de extraer todo el texto de un documento PDF, puede extraer el texto de cada página del documento por separado. Los siguientes son los pasos para realizar la extracción de texto página por página de PDF.

El siguiente ejemplo de código muestra cómo extraer texto página por página de un PDF en C++.

auto extractor = MakeObject<Facades::PdfExtractor>();
// Enlazar documento PDF de origen
extractor->BindPdf(u"candy.pdf");
// Extraer texto de 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;
	// Especifique el tipo de codificación Unicode en el constructor de 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++;
}

Más información sobre Aspose.PDF for C++

Puede explorar más sobre Aspose.PDF for C++ utilizando la documentación.

Ver también