2011-04-27 15 views
19

Quiero encontrar un módulo de Python OCR fácil de usar en Linux, he encontrado Pytesser http://code.google.com/p/pytesser/, pero contiene un archivo ejecutable .exe.Módulo Python OCR en Linux?

Intenté cambiar el código para usar vino, y realmente funciona, pero es demasiado lento y realmente no es una buena idea.

¿Hay alguna alternativa de Linux tan fácil de usar como esta?

+1

Por qué cerrar la pregunta? Seguramente encaja en "herramientas de software comúnmente utilizadas por los programadores" y "problemas prácticos y que responden que son exclusivos de la profesión de programación" definidos en http://stackoverflow.com/help/on-topic –

Respuesta

15

Usted sólo puede envolver tesseract en una función:

import os 
import tempfile 
import subprocess 

def ocr(path): 
    temp = tempfile.NamedTemporaryFile(delete=False) 

    process = subprocess.Popen(['tesseract', path, temp.name], stdout=subprocess.PIPE, stderr=subprocess.STDOUT) 
    process.communicate() 

    with open(temp.name + '.txt', 'r') as handle: 
     contents = handle.read() 

    os.remove(temp.name + '.txt') 
    os.remove(temp.name) 

    return contents 

Si desea documento segmentación y características más avanzadas, probar OCRopus.

+0

Ese código es incorrecto, 'handle. close() 'llama a' str.close() 'que no existe. – OneOfOne

+0

Gotcha. Lo reescribí un poco mientras escribía esto, ya que tenía dos funciones '.close()' que ocupaban espacio. No estoy seguro de si es malo omitirlos, pero he oído que Python se limpia solo. – Blender

+0

sí, el pytesser es también algo así como su función que concha el archivo ejecutable de tesseract y se recupera. Pero tessetact.exe utiliza un archivo temporal que me impide usar multi-threading (conflicto de archivos) –

10

Además de la respuesta de Blender, que solo ejecuta el ejecutable de Tesseract, me gustaría agregar que existen otras alternativas para OCR que también se pueden llamar como proceso externo.

ABBYY línea de comand utilidad OCR: http://ocr4linux.com/en:start

No es gratuito, por lo que vale la pena considerar sólo si Tesseract precisión no es lo suficientemente bueno para su tarea, o si necesita analisis de diseño más sofisticadas o necesita exportar PDF, Word y otros archivos.

Actualización: aquí está la comparación de ABBYY y precisión Tesseract: http://www.splitbrain.org/blog/2010-06/15-linux_ocr_software_comparison

responsabilidad: yo trabajo para ABBYY

+0

Argumentaría que Tesseract tiene mejor precisión que ABBY FineReader, ya que he usado ambos para digitalizar unos cientos de libros. – Blender

+1

@Blender: Aquí está la comparación de varios motores: http://www.splitbrain.org/blog/2010-06/15-linux_ocr_software_comparison Se puede ver que ABBYY mucho más preciso en general, dando el 100% de precisión en la mayoría de las muestras, pero aún hay áreas donde es peor que tesseract. Mi experiencia muestra lo mismo: ABBYY en general es mucho más preciso y (lo que es más importante para mí) funciona bien incluso sin entrenamiento. ¿Has entrenado tesseract para un documento? ¿Y también entrenaste a ABBYY o lo comparaste con lo que es? – Tomato

+0

Sin entrenamiento para Tesseract en absoluto. Pero estoy usando la versión 'svn' de Tesseract, que es muy diferente de la versión estable normal. – Blender

1

Usted debe tratar las excelentes bibliotecas scikits.learn para el aprendizaje automático. Puede encontrar dos códigos que están listos para ejecutarse here y here.

6

pitón Tesseract

http://code.google.com/p/python-tesseract

import cv2.cv as cv 
import tesseract 

api = tesseract.TessBaseAPI() 
api.Init(".","eng",tesseract.OEM_DEFAULT) 
api.SetPageSegMode(tesseract.PSM_AUTO) 

image=cv.LoadImage("eurotext.jpg", cv.CV_LOAD_IMAGE_GRAYSCALE) 
tesseract.SetCvImage(image,api) 
text=api.GetUTF8Text() 
conf=api.MeanTextConf() 
0

usted tiene un montón de opciones aquí.

Una forma, como otros señalaron es usar tesseract. Parece que hay un montón de envoltorios por ahora, así que la mejor manera es do a quick pypi search para ello. Los más utilizados hoy en día son:

Otro sitio útil para encontrar motores similares es alternative.to.A pocos sistemas basados ​​en Linux según ellos son:

  • ABBYY
  • Tesseract
  • cuneiformes
  • OCRopus
  • Gobierno de Costa Rica