Haga que el PDF existente se pueda buscar (OCR) a través de la línea de comandos / script


21

Estoy buscando una herramienta de secuencias de comandos fuera de línea que haga que se pueda buscar un archivo PDF existente ejecutando OCR en él, reemplazando el archivo original que no se puede buscar con la versión que se puede buscar, y que se puede ejecutar sin supervisión.

Por ejemplo, www.pdfscannerapp.com: hace exactamente lo que necesito, pero es solo GUI, no programable.

Soy consciente de que Evernote hace que los archivos PDF se puedan buscar, pero solo se pueden buscar dentro de Evernote.

No estoy buscando un OCR perfecto, incluso un OCR moderadamente aceptable está bien, pero preferiría una pequeña utilidad en lugar de un paquete de software voluminoso.

(Soy consciente de una pregunta similar, pero diferente sobre AD: Buscando software para escanear o convertir a PDF con capacidad de búsqueda y firmable ; sin embargo, no necesito firmar o completar archivos PDF, y mi requisito es que la solución sea programable)

EDITAR:

1) Varias utilidades permiten la extracción de texto estructurado, sin embargo, para ser extraído, el texto debe estar allí; Me refiero principalmente a los PDF que son mapas de bits envueltos, como es el caso de los PDF simples generados por escáneres.

2) No estoy necesariamente buscando una solución gratuita, y estaría más que feliz de pagar por una buena utilidad que solo hace lo que necesito, pero no estoy buscando aplicaciones voluminosas con un millón de características que incluyen una función de OCR, pero cuyo costo no justifica comprarlos solo por la funcionalidad OCR.

3) Como se indicó anteriormente, no estoy buscando un OCR perfecto, solo un OCR moderadamente aceptable. Desafortunadamente, en mi experiencia, tesseract está realmente por debajo de ese umbral. Defino "moderadamente aceptable" un OCR que puede, por ejemplo, OCR una factura de servicios públicos para que al menos el número de cuenta (número de cliente) se reconozca correctamente.

EDITAR: "programable" o "automatizable", es decir, que puede activarse automáticamente y ejecutarse desatendido sin intervención humana alguna.


2
... no saben lo difícil que sería hacer pero Tesseract OCR menudo mencionado code.google.com/p/tesseract-ocr y OCR en Unix.SE .
hhh

1
Hay una pregunta similar aquí , ¿la respuesta se ajusta a sus requisitos?
nohillside

1
Mencionas OCR. ¿Sus requisitos incluyen el manejo de imágenes en PDF o archivos PDF escaneados? Para los archivos que tienen texto dentro de ellos como simple postscript, entonces un convertidor de PDF a texto como "PDF2Text Pilot" podría funcionar para usted.
Tim B

@patrix Estaba buscando una utilidad más pequeña, no necesariamente gratuita pero en un rango de precios diferente. Aún así, es una posible solución, gracias.
magma

@TimothyButler desafortunadamente estoy tratando con PDF escaneados (imágenes). Pero, buena pista, gracias.
magma

Respuestas:


5

No estoy del todo claro para mí cuáles son sus requisitos para poder "escribir" esto desde la "línea de comando".

Si habla de automatización, eso es posible con cualquier cantidad de utilidades.

ABBYY FineReader Express + Teclado Maestro + Hazel

Yo uso ABBYY FineReader Express + Keyboard Maestro + Hazel así:

  1. Hazel monitorea una carpeta dada para cualquier PDF nuevo

  2. Si se encuentra un PDF, se abre en "ABBYY FineReader Express"

  3. Luego, Keyboard Maestro automatiza el proceso de convertir el PDF en un PDF con capacidad de búsqueda (OCR) y guarda el archivo en un directorio diferente.

Ahora, si aún no posee Hazel y Keyboard Maestro, sus costos iniciales van a aumentar bastante rápido (aunque dependo tanto de ambos que los considero una ganga).

PDFPen + AppleScript + Acciones de carpeta

Podría hacer algo similar con PDFPen (o PDFPenPro) y las acciones de carpeta y AppleScript. Consulte https://gist.github.com/prenagha/1355037 para ver un ejemplo.

Marco Arment hizo una encuesta de las aplicaciones de OCR para Mac y descubrió que PDFPen tenía excelentes resultados y era fácil de automatizar.

Una búsqueda en Google para "PDFpen applescript OCR" mostrará varias alternativas.


buena respuesta TJ. Hazel es increíble, lo tengo y disfruto usarlo inmensamente. Actualmente no poseo abbyy / keyboard master, pero Hazel + PDFPen es un combo increíble. En general, aunque todas las respuestas aquí son generalmente muy buenas y sirven a audiencias ligeramente diferentes, creo que Hazel + PDFPen es una buena opción para el problema original. Aceptado.
magma

+1 en ABBYYFineReader Express, fácilmente el mejor OCR que existe en este momento y he pasado por casi una docena para un proyecto propio
TechZen

12

Lo que quieres es Tesseract OCR. Es un OCR de código abierto que mantiene Google y admite una variedad de plataformas. También tiene una interfaz de línea de comando nativa. Es exactamente lo que está buscando y está disponible en el proyecto de puertos Mac, así como en homebrew .

Página principal del proyecto: https://github.com/tesseract-ocr

Cómo instalar en OS X: http://blog.matt-swain.com/post/26419042500/installing-tesseract-ocr-on-mac-os-x-lion

Ejemplo de uso: tesseract -l eng input.pdf output


Buen proyecto En mis pruebas, el reconocimiento fue deficiente, pero estoy seguro de que eso depende de mi incapacidad para ajustarlo. Estaba buscando una solución más vaga, pero esta podría ser una buena opción, especialmente si desea más control y puede dedicarle tiempo.
magma

tesseract no se vuelve muy bueno en comparación con las aplicaciones propietarias más actuales. En particular, tiene problemas con la codificación y las matemáticas, a menudo produciendo muchos caracteres griegos.
TechZen

¿La versión OS X permite entradas PDF? La versión de Windows no.
Doug

8

Descargo de responsabilidad: NO ES UNA SOLUCIÓN OCR (pero esta respuesta sigue siendo útil para extraer texto de pdf)

Hay un proyecto de Apache Software Foundation llamado Apache Tika :

Un kit de herramientas detecta y extrae metadatos y contenido de texto estructurado de varios documentos utilizando las bibliotecas de analizadores existentes

Admiten la extracción de texto en PDF con PDFBox :

permite la creación de nuevos documentos PDF, la manipulación de documentos existentes y la capacidad de extraer contenido de documentos. Apache PDFBox también incluye varias utilidades de línea de comando

Y recientemente también agregaron soporte para OCR (a través de Tesserac)

Para una solución basada en texto, PDFBox hace que extraer texto de un PDF sea muy simple:

También tiene algunas otras buenas opciones que puedes ver en los documentos de ExtractText .


Definitivamente es una buena opción para extraer texto, pero no hay capacidad de OCR que pueda ver.
magma

1
@magma OCR significa "reconocimiento óptico de caracteres", definitivamente hay "capacidad de OCR". Ahora necesita aclarar: ¿es su problema extraer texto de una imagen de baja resolución como la generada con una cámara VGA, un escáner deficiente o una imagen distante? Entonces su problema es diferente y requiere consideración física de cosas como la súper resolución. Por favor, haga preguntas más específicas y más cortas para que puedan ser respondidas. Le sugiero que simplifique esta pregunta a una característica que desee. Si quieres algo más, haz una nueva pregunta.
hhh

3
@hhh, una cosa es extraer texto de un archivo binario (como un PDF) para que sea utilizable y legible, analizando el formato binario. No hay nada óptico al respecto. el texto ya está allí, estas utilidades simplemente lo extraen para que sea fácil de ver, por así decirlo. El reconocimiento óptico de caracteres es diferente en el sentido de que intenta reconocer patrones de píxeles en un mapa de bits y darles suficiente sentido como para que pueda producir un fragmento de texto correspondiente.
magma

Esto no responde a la pregunta original. AFAICT, pdfbox-app no ​​hace OCR.
Feuermurmel

5

yo recomendaria DEVONThink Pro Office . Es una excelente aplicación y tiene muy buen soporte para AppleScript. Por desgracia, solo la versión 'Pro Office' tiene la capacidad de OCR, por lo que tendrá que pagar £ 100 ($ 150).

Sería excesivo si solo lo usa para OCR con script, pero es una muy buena aplicación.

[editar] - ah, solo relee tu publicación - ¡definitivamente sería exagerado!

Si solo desea OCR desde el shell, puede intentar hablar con ABBY cuyo motor DEVON licencia:

http://www.abbyy-developers.com/en:tech:samples:commandline_ocr


Aunque DEVONThink Pro Office en OS X es una exageración, es interesante. Si los desarrolladores lo diseñaron sobre OS X e iOS, podría funcionar (manteniendo la interfaz de usuario más simple): ¿sabe algo así? Sin embargo, es una idea genial, ¿entonces la versión Pro agrega automáticamente la capa OCR a todo tipo de cosas, como capturas de pantalla y archivos PDF? Y el usuario puede de alguna manera "script"?
hhh

2
Sí, la aplicación tiene un buen diccionario AppleScript que, entre otras cosas, le permite convertir imágenes almacenadas en la aplicación en archivos PDF con capacidad de búsqueda.
Diggory

Supongamos que tomo fotos con iPhone o capturas de pantalla con OS X y las pongo en una carpeta ProjectA, ¿el DEVONThink agrega la capa OCR automáticamente incluso sin especificar el idioma? Supongamos que los coloca en un DropBox y luego hace que DEVONThink en OSX para verificar la carpeta automáticamente, ¿podría trabajar con ella en OS X e iOS? Es un concepto fascinante si se hace bien ... +1
hhh

En cierto modo, suena como EverNote donde EverNote agrega el OCR pero no permite su exportación de esa manera. ¿Es posible exportar sus proyectos desde este software con el OCR? De lo contrario, una lib de OCR muy simple y luego una lib de análisis lingüístico pueden funcionar mejor. Quizás el otro sea ABBY, aún no lo sé.
hhh

2
Puede reconocer en varios idiomas: i.stack.imgur.com/buDLI.png
Diggory

5

Puede hacer que su PDF existente se pueda buscar convirtiéndolo en un archivo de texto. Necesita al menos Imagemagick , Ghostscript (para la conversión de PDF) y la herramienta Tesseract OCR.

Algún ejemplo de línea de comandos:

$ wget http://www.fmwconcepts.com/misc_tests/pdf_tests/test.pdf
$ convert -density 300 -depth 8 test.pdf test.png
$ tesseract test*.png test.txt
$ grep -i --color=auto the test*.txt
**The** details as told by surviving crew members, to **the** German publication Spiegel and published on ABC's

Esto puede extenderse aún más a sus necesidades.

Para instalar las herramientas requeridas, en OSX puede instalarlo a través de Homebrew :

brew install imagemagick jpeg libpng ghostscript tesseract

En uso de Linux apt-geto en yumlugar de brew.

Para obtener más herramientas de OCR, consulte: OCR en sistemas Linux

Relacionado:


4

Una solución que es fácilmente implementable y que proporciona un PDF de salida con la misma calidad de archivo de entrada más un tamaño razonable es OCRmyPDF:

https://github.com/jbarlow83/OCRmyPDF


Parece una solución genial, aunque he encontrado el backend de OCR, Tesseract, bastante decepcionante (ciertamente debido a mis propias limitaciones para configurarlo correctamente).
magma

Me encanta OCRmyPDF, vea mi respuesta a continuación que explica cómo instalar y arrastrar y soltar automatizarlo de forma rápida y sin dolor con Docker.
thadk

1

Stackoverflow tiene preguntas relacionadas en el análisis de PDF que cubren cosas como PDFBox y TIKA de Apache que utiliza PDFBox. El siguiente código de ruby ​​extrae la escritura de PDF. Debe tener una resolución suficientemente buena para que este tipo de códigos funcione de manera sólida. Así que obtenga un escáner lo suficientemente bueno con gran resolución y luego vea si algunos de los softwares funcionan.

Ejemplos

  1. https://github.com/yob/pdf-reader/tree/master/examples

Hilos SO

  1. /programming/5217783/pdf-parse-to-text-in-java

  2. /programming/8149179/alternative-to-tika-pdfbox-for-parsing-pdf-in-solr-any-version-later-than-1-4

  3. /programming/320621/ruby-pdf-parsing-gem-library

  4. /programming/15186740/haskell-parsing-reading-content-of-pdf-files

[Editar]

No estoy seguro si entendí tu problema ahora. ¿Desea agregar una capa de OCR a diferentes tipos de material, como fotos aleatorias, capturas de pantalla, PDF sin capa de OCR, etc.? No conozco la solución, pero estoy seguro de que alguien sabe, así que le hice una pregunta específica sobre cómo hacerlo con Automator y algún software de OCR:

¿Automator-script con un software OCR para agregar automáticamente OCR al material?


Nuevamente: no estoy buscando analizar o extraer texto que ya está allí. Estoy buscando reconocer texto (OCR) en un archivo PDF que son esencialmente imágenes, mapas de bits; originalmente no contienen ningún texto.
magma

@magma por favor, mira mi actualización. ¿Desea automatizar la adición de la capa OCR para poder buscar en diferentes tipos de documentos incluso sin "texto de búsqueda"? Si pudieras hacer esto, podrías buscar en todos los documentos en Finder, ¿entiendes? Me sorprende que Apple no haga esto en las próximas actualizaciones ...
hhh

como se indica en mi pregunta, sí.
magma

1

Para este tipo de aplicación autodirigida, soy un gran admirador de Hazel.

Hace que sea extremadamente fácil escribir acciones sin necesidad de aprender una herramienta más orientada a la línea de comandos como perl o python y emparejada con el motor de OCR de su elección (el mío es actualmente PDF Pen Pro), no debería tener problemas para procesar sus archivos con un mínimo escándalo.

Ambos son software pago, pero la utilidad de ambos se extiende mucho más allá de este caso. En mi situación, con el trabajo involucrado en la digitalización de mis registros escaneados anteriores (y el documento en curso), el precio de estos supera con creces el tiempo que habría pasado programando esto en otro lugar y ahora que tengo ambas herramientas, puedo hacer muchas otras tareas con ellos.


0

PDFScannerApp tiene un soporte de secuencias de comandos no oficial. Póngase en contacto con el autor para la acción de Automator.


0

Yo uso Adobe Acrobat para OCR en lote. Mi escáner dúplex puede OCR después de escanear, pero la tecnología OCR en Acrobat es más precisa en mi opinión. Solo apunto a la carpeta que no tiene OCR y luego acrobat re guarda el PDF como PDF con capacidad de búsqueda que ahora incluye una capa de texto. Si quisiera OCR a través de la línea de comando, no conozco una manera, pero puedo automatizar el final de la GUI usando Autohotkey. No es tan confiable ni rápido como la línea de comandos, pero hace el trabajo después de configurar una acción de flujo de trabajo para minimizar la interacción de la GUI.

Para Mac, Apple Script hace lo que hace Autohotkey en la PC, aunque todavía no lo he probado en mi Mac.

La tecla de acceso directo automática viene con una grabadora, por lo que la mayor parte de la escritura del guión es una cena para usted con un poco más de edición para refinar y tal vez hacer un bucle si lo desea.

He estado experimentando imágenes de OCR pero aún no he automatizado el proceso completamente a través de acrobat. La línea de comando es ideal, pero no he encontrado un motor de OCR de calidad que supere a Acrobat, por lo que me quedo con Acrobat por ahora.


0

Me topé con esto recientemente: http://ocrkit.com/faq.html

Sin embargo, debe pagar después de 14 días.


1
Bienvenido a Ask Different! Estamos tratando de encontrar las mejores respuestas y esas respuestas proporcionarán información sobre por qué son las mejores. Explique por qué cree que el software que recomendó es mejor que otros. En general, las respuestas de solo enlace son susceptibles de ser eliminadas, por lo que siempre debe hacer que su respuesta incluya toda la información relevante. Vea Cómo responder sobre cómo proporcionar una respuesta de calidad.
fsb

0

Obtuve una conversión de arrastrar y soltar de alta calidad con Docker.

Si tu:

  1. instala Docker para tu Mac y
  2. luego cree una nueva aplicación Automator
  3. con estos contenidos dentro de una acción "Ejecutar un script de Shell". Elija Pass Input:"as arguments"

/bin/bash texto del guión:

cd "`dirname "$1"`"
/usr/local/bin/docker run --rm -v "$(pwd):/home/docker" jbarlow83/OCRmyPDF --force-ocr "`basename "$1"`" "`basename -s .pdf "$1"`-ocr.pdf"

Debería ser bueno arrastrar y soltar archivos PDF y obtendrá un PDF con un nombre similar con "-ocr" adjunto al nombre del archivo.

Me imagino que podría modificarse fácilmente para devolver un archivo a Automator para copiarlo en algún lugar también. Más detalles sobre el excelente paquete acoplable OCRmyPDF. y herramienta principal (también mencionada en una respuesta diferente).

Puede probarlo en Automator con la acción "Obtener elementos del Finder especificados" como entrada para esto.

La primera vez que se ejecuta, lleva más tiempo ya que necesitará descargar las imágenes de Docker para OCRmyPDF (de forma invisible). En Terminal, puedes correr alternativamente docker pull jbarlow83/ocrmypdfpara acelerar la primera carrera. Una ejecución típica tarda unos 10 segundos por página de DPI alto, pero tiene resultados de texto a texto automáticamente incluso si hay tablas o diagramas. Antes de OCRing, recorte con Sejda para que se eliminen las palabras de margen sin sentido de otras páginas.

El --force-ocrargumento le dice a la herramienta que ignore y sobrescriba cualquier intento anterior de OCR, que en mi caso suele ser solo parcial e inútil.


0

OCRKit tiene soporte para AppleScript y una CLI. Desde su página de ayuda :

AppleScript

También puede escribir OCRKit para integrarlo en su flujo de trabajo específico. Por ejemplo, procese los archivos entrantes, a través de una carpeta compartida, desde la máquina de copia MFP, etc. y simplemente dígale a OCRKit que se abra y así el proceso se realizará a través de AppleScript:

tell application "OCRKit"
   -- the wonders of AppleScript POSIX path handling, ...
   open "Users:admin:Desktop:orderform.pdf"
   open POSIX path of "/Users/Admin/Desktop/orderform.pdf"
end tell 

Línea de comando

Desde OCRKit versión 2.5 se admite la secuencia de comandos de línea de comando directo. Esto simplifica enormemente el uso de OCRKit en el procesamiento por lotes, permite configurar más opciones y también es más robusto y multiplataforma que AppleSCript.

OCRKit.app/Contents/MacOS/OCRKit \ 
    --lang en | de | fr | es | ... \
    --format pdf | html | rtf | text \
    --no-progress \
    --output out-file in-file

Desde OCRKit versión 16.9 se admiten opciones de línea de comando adicionales:

-r, --recursive directory

Escanee el directorio de forma recursiva en busca de nuevos archivos. Omite archivos de OCRKit, con capa de texto o gráficos vectoriales.

--pattern "regex"

Patrón utilizado para hacer coincidir los nombres de los archivos durante los escaneos recursivos. Por defecto %.pdf$, la recomendación para TIFF es%.tiff?$

--log file

Escriba información y estadísticas del archivo de registro durante la exploración recursiva en el archivo.

--password secret

Use una contraseña secreta para descifrar archivos PDF durante el procesamiento por lotes.

--test-run [ fast ]

Solo ejecute el procesamiento por lotes de prueba en modo de prueba para probar archivos PDF u obtener el recuento de páginas para estimar el tiempo total de procesamiento. "rápido" solo verificará la primera página de cada archivo, en lugar de pasar por todas las páginas para analizar imágenes y vectores.

--tag name

Utilice el nombre de atributo extendido para etiquetar el estado de procesamiento de los archivos durante el procesamiento por lotes. macos:OCRKit (%s)utilizará etiquetas nativas de MacOS Finder en su lugar, o simplemente macos:OCRKitno incluirá el atributo de estado. El orden del atributo de estado son: started, analyzed, processed, y puede también ser encrypted.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.