如何使用python从图像中获取字母

时间:2013-09-10 09:04:10

标签: python python-2.7 ocr

我希望使用python从图像中捕获字母(字符和数字)请帮助我如何使用任何示例代码解释我。

2 个答案:

答案 0 :(得分:0)

我使用tesseract。 还有一个Python库:https://code.google.com/p/python-tesseract/

主页上的示例:

import tesseract
api = tesseract.TessBaseAPI()
api.Init(".","eng",tesseract.OEM_DEFAULT)
api.SetVariable("tessedit_char_whitelist", "0123456789abcdefghijklmnopqrstuvwxyz")
api.SetPageSegMode(tesseract.PSM_AUTO)

mImgFile = "eurotext.jpg"
mBuffer=open(mImgFile,"rb").read()
result = tesseract.ProcessPagesBuffer(mBuffer,len(mBuffer),api)
print "result(ProcessPagesBuffer)=",result

以下是我的Python3代码,不使用tesseract库,而是使用.exe文件:

import os
import tempfile

def tesser_exe():
    path = os.path.join(os.environ['Programfiles'], 'Tesseract-OCR', 'tesseract.exe')
    if not os.path.exists(path):
        raise NotImplementedError('You must first install tesseract from https://code.google.com/p/tesseract-ocr/downloads/detail?name=tesseract-ocr-setup-3.02.02.exe&can=2&q=')
    return path

def text_from_image_file(image_name):
    assert image_name.lower().endswith('.bmp')
    output_name = tempfile.mktemp()
    exe_file = tesser_exe() # path to the tesseract.exe file from 
    return_code = subprocess.call([exe_file, image_name, output_name, '-psm', '7'])
    if return_code != 0:
        raise NotImplementedError('error handling not implemented')
    return open(output_name + '.txt', encoding = 'utf8').read()

答案 1 :(得分:0)

我希望如果您的图像清晰,这将帮助您(正面减少噪音)。     在本案例中使用谷歌的“PyTesser”项目。
    PyTesser是Python的光学字符识别模块。      它将图像或图像文件作为输入并输出字符串。     
您可以从this链接获取PyTesser。      这是一个例子:

>>> from pytesser import *
>>> image = Image.open('fnord.tif')  # Open image object using PIL
>>> print image_to_string(image)     # Run tesseract.exe on image
fnord
>>> print image_file_to_string('fnord.tif')
fnord