2009-12-11 11 views
6

En mi trabajo, a veces tengo que tomar algún código fuente impreso y escribir manualmente el código fuente en un editor de texto. No preguntes por que.¿Necesita un buen OCR para el listado del código fuente impreso, alguna idea?

Obviamente, escribirlo lleva mucho tiempo y siempre requiere tiempo extra para depurar los errores de tipeo (se ha perdido un signo de "$" allí).

yo decidimos probar algunas soluciones de OCR como:

  • Microsoft Document Imaging - ha construido en el OCR
    • Resultado: se perdió todos los espacios en blanco que lleva, se perdió todos los guiones, interpretado muchos de los puntuacion caracteres incorrectamente.
    • Conclusión: Más lento que escribir manualmente en el código.
  • Varios Web en línea OCR aplicaciones
    • Resultado: similar o peor que Microsoft Document Imaging
    • Conclusión: Más lento que escribir manualmente en el código.

me siento como código fuente, sería muy fácil de OCR dado que la fuente es sans serif y monospace.

¿Alguno de ustedes ha encontrado una buena solución de OCR que funciona bien en el código fuente?

Tal vez solo necesito una mejor solución de OCR (no necesariamente el código fuente específico)?

Respuesta

5

Con OCR, en la actualidad hay tres opciones:

  • Abbee FineReader y OminPage. Ambos son productos comerciales que están a la altura cuando se trata de características y resultados de OCR. No puedo decir mucho sobre OmniPage, pero FineReader viene con soporte para leer el código fuente (por ejemplo, tiene una biblioteca de lenguaje Java).
  • El mejor motor OSS OCR es tesseract. Es mucho más difícil de usar, es probable que necesites entrenarlo para tu idioma.

Raramente hago OCR pero he descubierto que gastar los $ 150 en el software comercial pesa mucho el tiempo perdido.

+0

Probé Tesseract. Falló cuando lo descargué por primera vez. El archivo léame en línea especifica que no viene con ningún dato de entrenamiento. Descargué los datos de entrenamiento en inglés del sitio web y los destraté en subdirectorios tessdata. PERO entonces todavía se quejaba de "no pudo encontrar eng.unicharset". ¿Cómo estoy metiendo esto? –

+2

¿Ves lo que quiero decir? Tesseract es gratis solo si su tiempo no cuesta nada. Pero puede publicar preguntas en el grupo de usuarios de tesseract. Ellos son amigables allí y su aporte ayudará a que sea más fácil para la siguiente persona poner a esta bestia. –

+0

@Aaron Digulla, señor, ¿puede compartir algunas bibliotecas de OCR que están dentro del rango de $ 150 a $ 500, –

1

El texto impreso vs manuscrita es generalmente más fácil para OCR, sin embargo, todo depende de su imagen de origen en, por lo general encuentran que la captura en formato PNG, con colores reducidos (en escala de grises es el mejor) con un poco de limpieza manual (eliminar cualquier imagen ruido debido al escaneo, etc.) funciona mejor.

La mayoría de OCR son similares en rendimiento y precisión. Los OCR con la capacidad de entrenar/corregir serían los mejores.

1

En general, encontré que FineReader da muy buenos resultados. Normalmente, todos los productos tienen una versión de prueba disponible. Intenta todo lo que puedas.

Ahora, el código fuente del programa puede ser complicado:

  • espacios iniciales: tal vez un proceso de impresora bastante de código postal puede ayudar
  • guiones y puntuacion: tal vez un buen producto pueden ser entrenados para que
1

OCRopus es también una buena opción de fuente abierta. Pero al igual que Tesseract, hay una curva de aprendizaje bastante empinada para usar e integrar de manera efectiva.

1

Probar http://www.free-ocr.com/. Lo he usado para recuperar el código fuente de una captura de pantalla cuando mi IDE falla en una sesión de editor sin previo aviso. Obviamente, depende de la fuente que esté utilizando en el editor (uso Courier New 10pt en Delphi). Traté de usar Google Docs, que OCR una imagen cuando lo cargue, mientras que Google Docs es bastante bueno en documentos escaneados, por alguna razón falla miserablemente en la fuente de Pascal.

Un ejemplo de FreeOCR en el trabajo: imagen de entrada:

image uploaded

dio esta:

begin 
FileIDToDelete := FolderToClean + 5earchRecord.Name ; 
Inc (TotalFilesFound) ; 
if (DeleteFile (PChar (FileIDToDelete))) then 
begin 
Log5tartupError (FormatEx (‘%s file %s deleted‘, [Annotation, Fi eIDToDelete])) ; 
Inc (TotalFilesDeleted) ; 
end 
else 
begin 
Log5tartupError (FormatEx (‘Error deleting %s file %s‘, [Annotat'on, FileIDToDelete])) ; 
Inc (TotalFilesDeleteErrors) ; 
end ; 
end ; 
FindResult := 5ysUtils.FindNext (5earchRecord) ; 
end ; 

por lo que reemplazar la indentación está la mayor parte del trabajo, a continuación, cambiar todos 5 's en mayúscula S. También se confundió con la línea vertical en la marca de 80 columnas. Afortunadamente, la mayoría de los errores serán recogidos por el compilador (con la excepción de los errores dentro de las cadenas entre comillas).

Es una pena que FreeOCR no tenga una opción de "código fuente", donde el espacio en blanco se trata como significativo.

Consejo: si su fuente incluye resaltado de sintaxis, asegúrese de guardar la imagen en escala de grises antes de cargarla.

3

Dos nuevas opciones existe en la actualidad (años después se hizo la pregunta):

1.)

Windows 10 viene con un motor de OCR de Microsoft.

Es en el espacio de nombres:

Windows.Media.Ocr.OcrEngine 

https://msdn.microsoft.com/en-us/library/windows/apps/windows.media.ocr

También hay un ejemplo en Github:

https://github.com/Microsoft/Windows-universal-samples/tree/master/Samples/OCR

Usted necesita ya sea VS2015 para compilar esta materia. O si desea utilizar una versión anterior de Visual Studio, debe invocarlo a través de COM tradicional, luego lea este artículo en CodeProject: http://www.codeproject.com/Articles/262151/Visual-Cplusplus-and-WinRT-Metro-Some-fundamentals

La calidad de OCR es muy buena. Sin embargo, si el texto es demasiado pequeño, debe ampliar la imagen antes. Puede descargar todos los idiomas que existen en el mundo a través de Windows Update, ¡incluso para escribir a mano!


2.)

Otra opción es usar la biblioteca de OCR de Office. Es una DLL COM. Está disponible en Office 2003, 2007 y Vista, pero se ha eliminado en la Oficina 2010.

http://www.codeproject.com/Articles/10130/OCR-with-Microsoft-Office

La desventaja es que cada instalación de Office viene con soporte para varios idiomas. Por ejemplo, un Office español instala soporte para español, inglés, portugués y francés. Pero noté que casi no hace diferencia si usa el español o el inglés como idioma OCR para detectar un texto en español.

Si convierte la imagen a escala de grises obtendrá mejores resultados. El reconocimiento está bien, pero no me satisfizo. Hace aproximadamente tantos errores como Tesseract, aunque Tesseract necesita mucho más preprocesamiento de imágenes para obtener estos resultados.

+0

Hola @Elume ¿podrías echar un vistazo a este http://stackoverflow.com/questions/38824278/add-new-language-for-ocr-engine – Cloy

Cuestiones relacionadas