perl pdf text extract

¿Cómo puedo extraer texto de un archivo PDF en Perl?



extract (9)

Bueno, probé 2-3 módulos de perl como CAM :: PDF, API2, ¡pero el problema sigue siendo el mismo! Estoy analizando un archivo pdf que contiene las páginas principales. Cam o API2 analiza el texto plano muy bien. Sin embargo, no pueden analizar el fragmento de código [el fragmento de código generalmente está en una fuente y codificación diferentes a la del texto sin formato].

Estoy tratando de extraer texto de archivos PDF utilizando Perl. He estado usando pdftotext.exe desde la línea de comandos (es decir, usando la función del system Perl) para extraer texto de archivos PDF, este método funciona bien.

El problema es que tenemos símbolos como α, β y otros caracteres especiales en los archivos PDF que no se muestran en el archivo txt generado. También algunos espacios adicionales se están agregando al azar en el texto.

¿Existe una forma mejor y más confiable de extraer texto de archivos PDF de modo que el texto incluya todos los símbolos como α, β, etc. y el texto coincidirá exactamente con el texto del PDF (es decir, sin espacios adicionales)?


Echa un vistazo a PDFBox . Es una biblioteca pero creo que también viene con alguna herramienta para extraer texto.


En estos módulos se puede obtener el texto extraído de pdf.

PDF::API2

CAM::PDF

CAM::PDF::PageText

De CPAN

my $pdf = CAM::PDF->new($filename); my $pageone_tree = $pdf->getPageContentTree(1); print CAM::PDF::PageText->render($pageone_tree);

Este módulo intenta extraer texto secuencial de una página PDF. Este no es un proceso robusto, ya que el texto PDF se presenta gráficamente en orden arbitrario. Este módulo utiliza algunas heurísticas para tratar de adivinar qué texto va al lado de qué otro texto, pero puede ser engañado fácilmente por, digamos, subíndices, texto no horizontal, cambios en la fuente, campos de formulario, etc.

Dejando de lado todos esos descargos de responsabilidad, es útil para un volcado rápido de texto de un archivo PDF simple.


Es posible que nunca obtenga una solución adecuada para su problema. El formato PDF puede codificar texto como valores ASCII con una fuente aplicada o puede codificarlo como un mapa de bits. Si la herramienta que creó su PDF decidió codificar los caracteres especiales como un mapa de bits, no tendrá suerte (a menos que quiera entrar en las soluciones de OCR, por supuesto).



James Healy tiene razón. Después de probar CAM :: PDF y PDF :: API2, el primero de los cuales tuve cierto éxito al leer texto, la descarga de pdftotext funcionó muy bien para varias de mis implementaciones.

Si en Windows vaya aquí y descargue el binario precompilado de xpdf: http://www.foolabs.com/xpdf/download.html

Luego, si necesita ejecutar esto dentro del sistema perl use, por ejemplo: system ("C: / Utilities / xpdfbin-win-3.04 / bin64 / pdftotext.exe $ saveName");

donde $ saveName es la ruta completa a su archivo PDF.

Esperamos que esto te deje con un archivo de texto que puedas abrir y analizar en perl.


No soy un usuario de Perl, pero imagino que tendrá dificultades para encontrar un extractor de texto gratuito mejor que pdftotext.

pdftotext generalmente reconoce bien los caracteres que no son ASCII, ¿es posible que los esté extrayendo pero la aplicación que está usando para ver el archivo de texto no está usando la codificación correcta? Si pdftoetxt en Windows es el mismo que el de mi sistema Linux, entonces se exportará de forma predeterminada como utf-8.



Probé este módulo que funciona bien para caracteres especiales de pdf.

!/usr/bin/perl use strict; use warnings; use PDF::OCR::Thorough; my $filename = "pdf.pdf"; my $pdf = PDF::OCR::Thorough->new($filename); my $text = $pdf->get_text(); print "$text";