2011-05-30 9 views
22

¿El software OCR podría traducir de manera confiable una imagen como la siguiente en una lista de valores?
Table of values¿Puede el software de OCR leer de forma confiable los valores de una tabla?

ACTUALIZACIÓN:

En más detalle la tarea es la siguiente:

Tenemos una aplicación cliente, donde el usuario puede abrir un informe. Este informe contiene una tabla de valores. Pero no todos los reportes tiene el mismo aspecto - diferentes tipos de letra, espaciado diferente, diferentes colores, puede que el informe contiene muchas tablas con diferente número de filas/columnas ...

el usuario selecciona un área del informe que contiene una tabla . Usando el mouse

Ahora queremos convertir la tabla seleccionada en valores, utilizando nuestra herramienta de OCR.

En el momento en que el usuario selecciona el área rectangular, puedo solicitar información adicional para ayudar con el proceso de OCR, y pedir confirmación de que los valores han sido reconocidos correctamente.

Inicialmente será un proyecto experimental, y por lo tanto muy probablemente con una herramienta de OCR de OpenSource, o al menos una que no cueste dinero con fines experimentales.

+0

https://softwarerecs.stackexchange.com/questions/34358/program-to-generate-a-csv-file-from-an-image-containing-a-table –

Respuesta

18

La respuesta simple es SÍ, simplemente debe elegir las herramientas adecuadas.

No sé si alguna vez de código abierto puede acercarse al 100% de precisión en esas imágenes, pero en base a las respuestas aquí probablemente sí, si usted pasa algún tiempo en la formación y los análisis que resolver tabla de problemas y cosas por el estilo.

Cuando hablamos de OCR commertial como ABBYY u otro, le proporcionará una precisión del 99% o más y detectará las tablas automáticamente. Sin entrenamiento, nada, solo funciona.El inconveniente es que tienes que pagar $$. Algunos objetarían que para código abierto pagas tu tiempo para configurarlo y mantenerlo, pero todos deciden por sí mismo aquí.

Sin embargo, si hablamos de herramientas commertial, hay más posibilidades de elección en realidad. Y depende de lo que quieras. Los productos en caja, como FineReader, se están enfocando en la conversión de documentos de entrada en documentos editables como Word o Excell. Dado que realmente desea obtener datos, no el documento de Word, es posible que deba examinar diferentes categorías de productos: Captura de datos, que es esencialmente OCR más alguna lógica adicional para encontrar los datos necesarios en la página. En el caso de la factura podría ser el nombre de la empresa, la cantidad total, fecha de vencimiento, artículos de línea en la mesa, etc.

captura de datos es tema complicado y requiere un cierto aprendizaje, pero se utiliza correctamente puede conseguir una precisión quaranteed en la captura de datos de los documentos. Está utilizando diferentes reglas para la verificación cruzada de datos, búsquedas en la base de datos, etc. Cuando sea necesario, puede enviar datos para la verificación manual. Las empresas utilizan ampliamente aplicaciones de Captura de Datos para ingresar millones de documentos cada mes y dependen en gran medida de los datos extraídos en su flujo de trabajo diario.

y también hay OCR SDK por supuesto, que le dará acceso a la API a los resultados del reconocimiento y usted será capaz de programar qué hacer con los datos.

Si describe su tarea con más detalle lo que puedo ofrecerle un asesoramiento qué dirección es más fácil ir.

ACTUALIZACIÓN

Así que lo que hacen es básicamente la aplicación de captura de datos, pero no totalmente automatizada, utilizando la llamada "clic para indexar" enfoque. Hay una cantidad de aplicaciones similares en el mercado: escanea imágenes y el operador hace clic en el texto de la imagen (o dibuja un rectángulo alrededor) y luego rellena los campos en la base de datos. Es un buen enfoque cuando la cantidad de imágenes para procesar es relativamente pequeña, y la carga de trabajo manual no es lo suficientemente grande como para justificar el costo de una aplicación totalmente automatizada (sí, hay sistemas totalmente automatizados que pueden hacer imágenes con diferente fuente, espacio, distribución, número de filas en las tablas, etc.).

Si decidió desarrollar cosas y en lugar de comprar, entonces todo lo que necesita aquí es elegir OCR SDK. Toda la UI te vas a escribir, ¿verdad? La gran elección es decidir: de código abierto o comercial.

fuente abierta es mejor Tesseract OCR, por lo que yo sé. Es gratis, pero puede tener problemas reales con el análisis de tablas, pero con el enfoque de zonificación manual, este no debería ser el problema. En cuanto a la precisión de OCR, las personas a menudo entregan OCR para la fuente para aumentar la precisión, pero este no debería ser el caso, ya que las fuentes podrían ser diferentes. Por lo tanto, puedes probar tesseract y ver qué precisión obtendrás; esto influirá en la cantidad de trabajo manual para corregirlo.

commertial OCR dará una mayor precisión, pero le costará dinero. Creo que deberías echarle un vistazo para ver si vale la pena, o tesserack es lo suficientemente bueno para ti. Creo que la forma más sencilla sería descargar la versión de prueba de un producto de OCR de caja como FineReader. Obtendrá una buena idea de qué precisión habría en OCR SDK.

+0

@Tomate - gracias por compartir parte de su experiencia. Actualicé la pregunta para proporcionar más detalles. – GarethOwen

+0

He probado ABBYY FineReader y funciona como un encanto. Lástima que sea demasiado caro para la mayoría de la gente ... – Zenadix

5

¿De qué OCR está hablando?
¿Desarrollará códigos basados ​​en ese OCR o utilizará algo de los estantes?

FYI: Tesseract OCR

se ha puesto en marcha el ejecutable de la lectura de documentos, por lo que puede alimentar a toda la página, y se va a extraer caracteres para usted. Reconoce los espacios en blanco bastante bien, podría ayudar con el espaciado entre tabulaciones.

+0

Hola Gary , sí, ya comencé a mirar a Tesseract, pero después de los primeros experimentos no tuve suerte. Para el mapa de bits de ejemplo que publiqué con la pregunta, recibí el resultado 'Página vacía'. Pero tal vez solo necesito proporcionar los parámetros correctos? – GarethOwen

+1

He estado usando OCR para mi propia investigación desde hace varios años. Casi nunca obtengo Empty Page si no proporciono uno. Sin embargo, a veces, me pongo porque 1) la binerization @ Tesseract filtra la mayor parte de la información valiosa 2), incluso después de una buena binerization, los personajes no pueden ser reconocidos porque a) la inter-distancia "entre los personajes es demasiado pequeño (los personajes están muy juntos). b) los caracteres no son algo que Tesseract usado para entrenar Para 2a, ¿ha intentado ampliar su imagen decir 400% + de la imagen original? ¡he tenido suerte con eso! –

+0

1: Borré las líneas blancas imagen mi prueba de, agrandados por 400% y luego Tesseract hizo un reconocimiento preciso 100% de la segunda columna de valores (primer valor se ignora). Parece prometedor, pero necesito hacer algunos experimentos más. – GarethOwen

3

Realmente depende de la implementación.

Existen algunos parámetros que afectan a la capacidad del OCR para reconocer:
1. ¿Qué tan bien está capacitado el OCR - el tamaño y la calidad de la base de datos ejemplos
2. ¿Qué tan bien se está capacitado para detectar "basura" (Además de saber qué es una letra, necesitas saber qué NO es una letra).
3. El diseño del OCR y el tipo
4. Si se trata de una Red Nerural, la estructura de la Red Nerural afecta su capacidad para aprender y "decidir".

Por lo tanto, si no está haciendo uno propio, solo es cuestión de probar diferentes tipos hasta que encuentre uno que se ajuste.

15

Si siempre tiene bordes sólidos en su mesa, puede intentar esta solución:

  1. Localizar las líneas horizontales y verticales en cada página (carreras largas de píxeles negros)
  2. segmento del imagen en las células usando la línea coordina
  3. Limpiemos cada celda (quitar bordes, umbral de blanco y negro)
  4. Realizar OCR en cada célula
  5. Ensamble resultados en una matriz 2D

Else su documento tiene una tabla sin bordes, se puede tratar de seguir esta línea:

reconocimiento óptico de caracteres es algo bastante sorprendente, pero ISN' t siempre perfecto. Para obtener los mejores resultados posibles, ayuda usar la entrada más limpia que pueda. En mis experimentos iniciales, he encontrado que realizar OCR en todo el documento en realidad funcionó bastante bien como siempre y cuando quité los bordes de las celdas (largas horizontales y verticales líneas). Sin embargo, el software comprimió todos los espacios en blanco en un solo espacio vacío . Como mis documentos de entrada tenían varias columnas con varias palabras en cada columna, los límites de las celdas se estaban perdiendo. Retener la relación entre celdas era muy importante, así que una posible solución fue dibujar un carácter único, como "^" en cada límite de celda , algo que el OCR aún reconocería y que I podría usar más adelante para dividir las cadenas resultantes .

Encontré toda esta información en este enlace, solicitando a Google "OCR to table". El autor publicó a full algorithm using Python and Tesseract, ¡ambas soluciones opensource!

Si quieres probar el poder de Tesseract, tal vez debería probar este sitio:

http://www.free-ocr.com/

2

Usted podría intentar otro enfoque. Con tesseract (u otro OCRS) puede obtener coordenadas para cada palabra. Luego puede intentar agrupar esas palabras por coordenadas vercitales y horizontales para obtener filas/columnas. Por ejemplo, para diferenciar entre un espacio en blanco y un espacio de tabulación. Se necesita algo de práctica para obtener buenos resultados, pero es posible. Con este método puede detectar tablas incluso si las tablas usan separadores invisibles, sin líneas. Las palabras son las coordenadas base sólida para la tabla Reconoce

2

También hemos luchado con la cuestión del reconocimiento de texto dentro de tablas. Hay dos soluciones que lo hacen fuera de la caja, ABBYY Recognition Server y ABBYY FlexiCapture. Rec Server es una herramienta de OCR de gran volumen basada en servidor diseñada para la conversión de grandes volúmenes de documentos a un formato de búsqueda. Aunque está disponible con una API para esos tipos de usos, recomendamos FlexiCapture. FlexiCapture proporciona un control de bajo nivel sobre la extracción de datos desde formatos de tabla, incluida la detección automática de elementos de tabla en una página. Está disponible en una versión API completa sin interfaz, o en la versión comercial que comercializamos. Acércate a mí si quieres saber más.

3

He estado OCR'ing documentos escaneados desde el '98.Este es un problema recurrente para los documentos escaneados, especialmente para aquellos que incluyen páginas giradas y/o sesgadas.

Sí, hay varios buenos sistemas comerciales y algunos podrían proporcionar, una vez bien configurados, excelente velocidad de extracción automática de datos, solicitando la ayuda del operador solo para esos campos muy degradados. Si yo fuera tú, confiaría en algunos de ellos.

Si las opciones comerciales amenazan su presupuesto, OSS puede echar una mano. Pero, "no hay almuerzo gratis". Por lo tanto, tendrá que confiar en un conjunto de scripts hechos a medida para andamiar una solución asequible para procesar su montón de documentos. Afortunadamente, no estás solo. De hecho, en las últimas décadas, muchas personas han estado lidiando con esto. Por lo tanto, en mi humilde opinión, la mejor y concisa respuesta a esta pregunta es proporcionada por este artículo:

https://datascience.blog.wzb.eu/2017/02/16/data-mining-ocr-pdfs-using-pdftabextract-to-liberate-tabular-data-from-scanned-documents/

Su lectura vale la pena! El autor ofrece herramientas útiles propias, pero la conclusión del artículo es muy importante para darle una buena mentalidad sobre cómo resolver este tipo de problema.

"No hay bala de plata." (Fred Brooks, The Mitical Man-Month)

Cuestiones relacionadas