首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Tesseract-OCR进行图像到文本的识别比使用我的Python代码手工预处理图像更好

使用Tesseract-OCR进行图像到文本的识别比使用我的Python代码手工预处理图像更好
EN

Stack Overflow用户
提问于 2015-09-09 07:13:10
回答 1查看 9.9K关注 0票数 6

我试图用Python编写代码,用于使用Tesseract-OCR进行手动图像预处理和识别。

手册过程:

为了手动识别单个图像的文本,我使用Gimp对图像进行预处理,并创建一个TIF图像。然后我把它喂给Tesseract-OCR,它正确地识别了它。

用Gimp对图像进行预处理-

  1. 将模式更改为RGB /灰度 菜单--图像--模式- RGB
  2. 脱粒 菜单--工具--彩色工具--阈值--自动
  3. 将模式更改为索引 菜单--图像--模式-索引
  4. 调整大小/比例至宽度>300 to 菜单--图像--缩放图像-- Width=300
  5. 保存为Tif

然后我给它喂食-

代码语言:javascript
复制
$ tesseract captcha.tif output -psm 6

我一直都能得到准确的结果。

Python代码:

我试过用OpenCV和Tesseract复制上述程序-

代码语言:javascript
复制
def binarize_image_using_opencv(captcha_path, binary_image_path='input-black-n-white.jpg'):
    im_gray = cv2.imread(captcha_path, cv2.CV_LOAD_IMAGE_GRAYSCALE)
    (thresh, im_bw) = cv2.threshold(im_gray, 128, 255, cv2.THRESH_BINARY | cv2.THRESH_OTSU)
    # although thresh is used below, gonna pick something suitable
    im_bw = cv2.threshold(im_gray, thresh, 255, cv2.THRESH_BINARY)[1]
    cv2.imwrite(binary_image_path, im_bw)

    return binary_image_path

def preprocess_image_using_opencv(captcha_path):
    bin_image_path = binarize_image_using_opencv(captcha_path)

    im_bin = Image.open(bin_image_path)
    basewidth = 300  # in pixels
    wpercent = (basewidth/float(im_bin.size[0]))
    hsize = int((float(im_bin.size[1])*float(wpercent)))
    big = im_bin.resize((basewidth, hsize), Image.NEAREST)

    # tesseract-ocr only works with TIF so save the bigger image in that format
    tif_file = "input-NEAREST.tif"
    big.save(tif_file)

    return tif_file

def get_captcha_text_from_captcha_image(captcha_path):

    # Preprocess the image befor OCR
    tif_file = preprocess_image_using_opencv(captcha_path)

    #   Perform OCR using tesseract-ocr library
    # OCR : Optical Character Recognition
    image = Image.open(tif_file)
    ocr_text = image_to_string(image, config="-psm 6")
    alphanumeric_text = ''.join(e for e in ocr_text)

    return alphanumeric_text    

但我没有得到同样的准确性。我错过了什么?

更新1:

  1. 原始图像

  1. 使用Gimp创建的Tif图像

  1. 由我的python代码创建的Tif图像

更新2:

此代码可在https://github.com/hussaintamboli/python-image-to-text上使用。

EN

回答 1

Stack Overflow用户

发布于 2016-10-26 17:01:11

如果输出与预期输出的偏差最小(如注释中所建议的“额外的”、“等等),请尝试将字符识别限制在您期望的字符集上(例如字母数字)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32473095

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档