reconocer - ¿Puede el software de OCR leer de manera confiable los valores de una tabla?
programa ocr gratis (7)
¿El software de OCR podría traducir de manera confiable una imagen como la siguiente a una lista de valores?
ACTUALIZAR:
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 informes tienen el mismo aspecto: diferentes fuentes, diferentes espacios, diferentes colores, tal vez el informe contenga muchas tablas con diferente número de filas / columnas ...
El usuario selecciona un área del informe que contiene una tabla. Utilizando el ratón.
Ahora queremos convertir la tabla seleccionada en valores, utilizando nuestra herramienta 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 se han reconocido correctamente.
Inicialmente, será un proyecto experimental y, por lo tanto, muy probablemente con una herramienta OpenSource OCR, o al menos uno que no cueste dinero para fines experimentales.
¿De qué OCR estás hablando?
¿Desarrollará códigos basados en ese OCR o usará algo de los estantes?
Para tu información: Tesseract OCR
ha implementado el ejecutable de lectura de documentos, por lo que puede alimentar toda la página y extraerá los caracteres para usted. Reconoce los espacios en blanco bastante bien, podría ayudar con el espaciado de las pestañas.
He estado examinando documentos escaneados desde el ''98. Este es un problema recurrente para documentos escaneados, especialmente para aquellos que incluyen páginas rotadas y / o sesgadas.
Sí, hay varios buenos sistemas comerciales y algunos podrían proporcionar, una vez configurados, una excelente tasa de extracción automática de datos, que solicitan la ayuda del operador solo para aquellos 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 montón de scripts hechos a medida para crear una solución asequible para procesar su grupo de documentos. Afortunadamente, no estás solo. De hecho, en las últimas décadas, muchas personas han estado lidiando con esto. En mi opinión, este artículo proporciona la mejor y concisa respuesta para esta pregunta:
¡Vale su lectura! El autor ofrece herramientas útiles por sí mismo, pero la conclusión del artículo es muy importante para darle una buena idea acerca de cómo resolver este tipo de problema.
"No hay bala de plata." (Fred Brooks, El hombre-mes crítico )
La respuesta simple es SÍ, solo debe elegir las herramientas correctas.
No sé si el código abierto puede alcanzar una precisión del 100% en esas imágenes, pero en base a las respuestas aquí probablemente sí, si dedica algún tiempo a entrenar y resolver problemas de análisis de tablas y cosas por el estilo.
Cuando hablamos de OCR comercial como ABBYY u otro, le proporcionará un 99% de precisión fuera de la caja y detectará las tablas automáticamente. Sin entrenamiento, sin nada, solo funciona. El inconveniente es que hay que pagar $$. Algunos objetarán que para el código abierto pague su tiempo para configurarlo y mantenerlo, pero todos deciden por sí mismo aquí.
Sin embargo, si hablamos de herramientas comerciales, en realidad hay más opciones. Y depende de lo que quieras. Los productos en caja como FineReader en realidad están dirigidos a convertir 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 buscar en 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, el importe total, la fecha de vencimiento, los elementos de línea en la tabla, etc.
La captura de datos es un tema complicado y requiere cierto aprendizaje, pero su uso adecuado puede proporcionar una precisión garantizada al capturar datos de los documentos. Utiliza diferentes reglas para la verificación cruzada de datos, búsquedas en bases de datos, etc. Cuando sea necesario, puede enviar datos para verificación manual. Las empresas utilizan ampliamente las 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, que le dará acceso a la API para obtener resultados de reconocimiento y podrá programar qué hacer con los datos.
Si describe su tarea con más detalle, puedo aconsejarle qué dirección es más fácil seguir.
ACTUALIZAR
Entonces, lo que hace es básicamente una aplicación de captura de datos, pero no completamente automatizada, utilizando el enfoque denominado "hacer clic para indexar". Existe una cantidad de aplicaciones así en el mercado: escanea imágenes y el operador hace clic en el texto de la imagen (o dibuja un rectángulo a su alrededor) y luego llena los campos en la base de datos. Es un buen enfoque cuando la cantidad de imágenes a procesar es relativamente pequeña y la carga de trabajo manual no es lo suficientemente grande como para justificar el costo de la aplicación totalmente automatizada (sí, hay sistemas totalmente automatizados que pueden hacer imágenes con diferentes fuentes, espacios, diseños, número de filas en las tablas y así sucesivamente).
Si decidió desarrollar cosas y en lugar de comprar, todo lo que necesita aquí es elegir OCR SDK. Toda la interfaz de usuario que va a escribir usted mismo, ¿verdad? La gran elección es decidir: open source o comercial.
El mejor código abierto es tesseract OCR, que yo sepa. 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, la gente suele entrenar OCR para la fuente para aumentar la precisión, pero esto no debería ser el caso para usted, ya que las fuentes podrían ser diferentes. Por lo tanto, puede probar el tesseract y ver qué precisión obtendrá: esto influirá en la cantidad de trabajo manual para corregirlo.
Commercial OCR le dará mayor precisión pero le costará dinero. Creo que de todos modos 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 algún producto de OCR de caja como FineReader. Obtendrá una buena idea de la precisión que tendría el SDK de OCR.
Podrías probar otro enfoque. Con tesseract (u otro OCRS) puede obtener coordenadas para cada palabra. Luego, puede intentar agrupar esas palabras por coordenadas verticales y horizontales para obtener filas / columnas. Por ejemplo, para decir una diferencia 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 coordenadas de la palabra son una base sólida para la tabla de reconocimiento.
Realmente depende de la implementación.
Hay algunos parámetros que afectan la capacidad del OCR para reconocer:
1. Qué tan bien capacitado está el OCR - el tamaño y la calidad de la base de datos de ejemplos
2. Qué tan bien está entrenado para detectar "basura" (además de saber qué es una letra, debe saber qué NO es una letra).
3. El diseño y tipo del OCR.
4. Si se trata de una Red Nerural, la estructura de la Red Nerural afecta su capacidad para aprender y "decidir".
Entonces, si no está haciendo uno propio, es solo cuestión de probar diferentes tipos hasta que encuentre uno que se ajuste.
Si siempre tiene bordes sólidos en su tabla, puede probar esta solución:
- Localice las líneas horizontales y verticales en cada página (tiradas largas de píxeles negros)
- Segmenta la imagen en celdas usando las coordenadas de línea
- Limpie cada celda (eliminar bordes, umbral a blanco y negro)
- Realizar OCR en cada celda
- Ensamble los resultados en una matriz 2D
De lo contrario, su documento tiene una tabla sin bordes, puede intentar seguir esta línea:
El reconocimiento óptico de caracteres es algo bastante sorprendente, pero no siempre es perfecto. Para obtener los mejores resultados posibles, ayuda usar la entrada más limpia que puedas. En mis experimentos iniciales, descubrí que la ejecución de OCR en todo el documento funcionaba bastante bien siempre que eliminara los bordes de las celdas (líneas horizontales y verticales largas). Sin embargo, el software comprimió todos los espacios en blanco en un solo espacio vacío. Dado que mis documentos de entrada tenían varias columnas con varias palabras en cada columna, los límites de las celdas se perdían. Retener la relación entre las celdas era muy importante, por lo que una posible solución era dibujar un carácter único, como "^" en cada límite de celda, algo que el OCR aún reconocería y que podría usar más adelante para dividir las cadenas resultantes.
Encontré toda esta información en este enlace, y le pedí a Google "OCR a la tabla". El autor publicó un algoritmo completo utilizando Python y Tesseract , ambas soluciones de código abierto.
Si desea probar el poder de Tesseract, tal vez debería probar este sitio:
También hemos luchado con el problema de reconocer 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 ofrece 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 completa de la API sin una interfaz, o la versión comercial que comercializamos. Acércate a mí si quieres saber más.