gpt4 book ai didi

python - 当使用 Gimp 手动预处理图像时,使用 Tesseract-OCR 的图像到文本识别比我的 Python 代码更好

转载 作者:太空狗 更新时间:2023-10-30 00:16:58 40 4
gpt4 key购买 nike

我正在尝试使用 Tesseract-OCR 使用 Python 编写手动图像预处理和识别代码。

手动过程:
为了手动识别单个图像的文本,我使用 Gimp 预处理图像并创建了一个 TIF 图像。然后我将它提供给正确识别它的 Tesseract-OCR。

我使用 Gimp 预处理图像 -

  1. 将模式更改为 RGB/灰度
    菜单——图像——模式——RGB
  2. 阈值
    菜单——工具——颜色工具——阈值——自动
  3. 将模式更改为索引
    菜单——图片——模式——索引
  4. 调整大小/缩放至宽度 > 300px
    菜单--图像--缩放图像--宽度=300
  5. 另存为 Tif

然后我喂它 tesseract -

$ tesseract captcha.tif output -psm 6

而且我总能得到准确的结果。

Python 代码:
我尝试使用 OpenCV 和 Tesseract 复制上述过程 -

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. 原图
    enter image description here
  2. 使用 Gimp 创建的 Tif 图像
    enter image description here
  3. 由我的 python 代码创建的 Tif 图像
    enter image description here

更新 2:

此代码可在 https://github.com/hussaintamboli/python-image-to-text 获得

最佳答案

如果输出与预期输出的偏差很小(即评论中建议的额外 ',"等),请尝试将字符识别限制为您预期的字符集(例如字母数字)。

关于python - 当使用 Gimp 手动预处理图像时,使用 Tesseract-OCR 的图像到文本识别比我的 Python 代码更好,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32473095/

40 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com