python - tesseractnotfounderror - tesseract ocr
Python OCR Module en Linux? (5)
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 un proceso externo.
Utilidad OCR de línea de comando ABBYY: http://ocr4linux.com/en:start
No es gratis, por lo que vale la pena considerar solo si la precisión de Tesseract no es lo suficientemente buena para su tarea, si necesita un análisis de diseño más sofisticado o si necesita exportar archivos PDF, Word y otros.
Actualización: aquí está la comparación de ABBYY y la precisión de tesseract: http://www.splitbrain.org/blog/2010-06/15-linux_ocr_software_comparison
Descargo de responsabilidad: trabajo para ABBYY
Quiero encontrar un módulo de Python de OCR fácil de usar en Linux, he encontrado pytesser http://code.google.com/p/pytesser/ , pero contiene un archivo ejecutable .exe.
Intenté cambiar el código para usar el vino, y realmente funciona, pero es demasiado lento y no es una buena idea.
¿Hay alguna alternativa de Linux que sea tan fácil de usar como él?
Python 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()
Tienes un montón de opciones aquí.
Una forma, como otros señalaron es usar tesseract. Parece que ya hay un montón de envoltorios, así que la mejor manera es hacer una búsqueda rápida de pypi . Los más utilizados en estos días son:
Otro sitio útil para encontrar motores similares es alternative.to . Algunos sistemas basados en Linux según ellos son:
- Abby
- Tesseract
- Cuneiforme
- Ocropus
- GOCR
Simplemente puedes 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 segmentación de documentos y funciones más avanzadas, pruebe OCRopus .