Extracción de texto en PDF

Me gustaría extraer texto de una parte (usando coordenadas) de PDF usando Ghostscript. ¿Puede alguien ayudarme?

    Sí, con Ghostscript, puede extraer texto de archivos PDF. Pero no, no es la mejor herramienta para el trabajo. Y no, no puedes hacerlo en “porciones” (partes de una sola página). Lo que puede hacer: extraer el texto de un cierto rango de páginas solamente.

    Primero: el dispositivo de salida txtwrite de Ghostscript (no tan bueno)

      gs \ -dBATCH \ -dNOPAUSE \ -sDEVICE=txtwrite \ -dFirstPage=3 \ -dLastPage=5 \ -sOutputFile=- \ /path/to/your/pdf 

    Esto generará todos los textos contenidos en las páginas 3-5 a stdout. Si desea salida a un archivo de texto, use -sOutputFile=textfilename.txt .


    Actualización de gs :

    Las versiones recientes de Ghostscript han visto mejoras importantes en el dispositivo txtwrite y correcciones de errores. Consulte los registros de cambios recientes de Ghostscript (busque la escritura en txt en esa página) para obtener más información.


    Segundo: la utilidad PostScript de ps2ascii.ps de Ghostscript (mejor)

    Esto requiere que descargue la última versión del archivo ps2ascii.ps del repository de código fuente de Ghostscript Git . Tendría que convertir su PDF a PostScript y luego ejecutar este comando en el archivo PS:

     gs \ -q \ -dNODISPLAY \ -P- \ -dSAFER \ -dDELAYBIND \ -dWRITESYSTEMDICT \ -dSIMPLE \ /path/to/ps2ascii.ps \ input.ps \ -c quit 

    Si el parámetro -dSIMPLE no está definido, cada línea de salida contiene información adicional más allá del contenido de texto puro sobre las fonts y el tamaño de fuente utilizado.

    Si reemplaza ese parámetro por -dCOMPLEX , obtendrá información adicional sobre colores e imágenes utilizados.

    Lea los comentarios dentro de ps2ascii.ps para obtener más información sobre esta utilidad. No es cómodo de usar, pero para mí funcionó en la mayoría de los casos que lo necesitaba ….

    En tercer lugar: XPDF’s pdftotext CLI utility (más cómodo que Ghostscript)

    Una forma más cómoda de hacer extracción de texto: use pdftotext (disponible tanto para Windows como para Linux / Unix o Mac OS X). Esta utilidad se basa en Poppler o en XPDF. Este es un comando que puedes probar:

      pdftotext \ -f 13 \ -l 17 \ -layout \ -opw supersecret \ -upw secret \ -eol unix \ -nopgbrk \ /path/to/your/pdf - |less 

    Esto mostrará el rango de página 13 (primera página) a 17 (página anterior), preservará el diseño de un archivo PDF con nombre y contraseña doble (usando contraseñas de usuario y propietario secret y supersecreto ), con la convención EOL de Unix, pero sin insertando pagebreaks entre páginas de PDF, canalizadas a través de menos …

    pdftotext -h muestra todas las opciones de línea de comandos disponibles.

    Por supuesto, ambas herramientas solo funcionan para las partes de texto de los archivos PDF (si tienen alguno). Ah, y la fórmula matemática tampoco funcionará demasiado bien … 😉


    Actualización de pdftotext :

    Las versiones recientes del pdftotext de Poppler ahora tienen opciones para extraer páginas “una porción (usando coordenadas) de PDF” , como pidió el OP. Los parámetros son:

    • -x : coordenada x de la esquina superior izquierda del área de recorte
    • -y : coordenada y de la esquina superior izquierda del área de recorte
    • -W : ancho del área de recorte en píxeles (por defecto es 0)
    • -H : altura del área de recorte en píxeles (por defecto es 0)

    Mejor, si se usa con el parámetro -layout .


    Cuarto: el comando mutool draw también puede extraer texto

    La aplicación MuPDF multiplataforma y de código abierto (creada por la misma compañía que también desarrolla Ghostscript) ha incluido una herramienta de línea de comandos, mutool . Para extraer texto de un PDF con esta herramienta, use:

     mutool draw -F txt the.pdf 

    emitirá el texto extraído a . Use -o filename.txt para escribirlo en un archivo.

    Quinto: PDFLib’s Text Extraction Toolkit (TET) (lo mejor de todo … pero es PayWare)

    TET , el Text Extraction Toolkit de la familia de productos pdflib puede encontrar la coordenada xy del contenido de texto en un archivo PDF (y mucho más). TET tiene una interfaz de línea de comandos, y es la más poderosa de todas las herramientas de extracción de texto que conozco. (Incluso puede manejar ligaduras …) Cita de su sitio web:

    Geometría
    TET proporciona métricas precisas para el texto, como la posición en la página, el ancho de los glifos y la dirección del texto. Las áreas específicas en la página se pueden excluir o incluir en la extracción de texto, por ejemplo, para ignorar encabezados y pies de página o márgenes.

    En mi experiencia, si bien no tiene la interfaz de CLI más sencilla que puedas imaginar: una vez que te hayas acostumbrado, hará lo que promete hacer, para la mayoría de los archivos PDF que lanzas hacia él …


    Y hay incluso más opciones:

    1. podofotxtextract (herramienta CLI) del proyecto PoDoFo (Código abierto)
    2. calibre (normalmente un progtwig de GUI para manejar eBooks, código abierto) tiene una opción de línea de comandos que puede extraer texto de archivos PDF
    3. AbiWord (un procesador de textos GUI, código abierto) puede importar archivos PDF y guardar sus archivos como .txt: abiword --to=txt --to-name=output.txt input.pdf

    No estoy seguro de que GhostScript pueda aceptar coordenadas, pero puede convertir el PDF a una imagen y enviarlo a un motor de OCR, ya sea como una subimagen recortada de las coordenadas proporcionadas o como toda la imagen junto con las coordenadas. Algunas API de OCR aceptan un parámetro de rectángulo para delimitar la región de OCR.

    Mire en VietOCR un ejemplo de trabajo, que usa Tesseract como su motor de OCR y GhostScript como convertidor de PDF a imagen.

    Debenu Quick PDF Library puede extraer texto de un área definida en una página. La función SetTextExtractionArea le permite especificar las coordenadas xey y luego también puede especificar el ancho y la altura del área.

    • Izquierda = La coordenada horizontal del borde izquierdo del área
    • Arriba = La coordenada vertical del borde superior del área
    • Ancho = El ancho del área
    • Altura = La altura del área

    Luego se puede llamar inmediatamente a la función GetPageText para extraer el texto de esa área definida.

    Aquí hay un ejemplo usando C # (aunque la biblioteca es multiplataforma y se puede usar con muchos lenguajes de progtwigción diferentes):

     DPL.LoadFromFile(@"Sample.pdf", ""); DPL.SetOrigin(1); // Sets 0,0 coordinate position to top left of page, default is bottom left DPL.SetTextExtractionArea(35, 35, 229, 30); // Left, Top, Width, Height string ExtractedContent = DPL.GetPageText(8); Console.WriteLine(ExtractedContent); 

    Con GetPageText también es posible devolver solo el texto ubicado en esa área o el texto ubicado en esa área, así como información sobre la fuente del texto, como el nombre, el color y el tamaño.