gpt4 book ai didi

Python pytesseract - 找不到 eng.traineddata -- oem 2

转载 作者:行者123 更新时间:2023-12-04 12:41:04 35 4
gpt4 key购买 nike

我正在尝试从简单图像中提取文本。

sample_image

当我使用默认引擎 (oem 3) 时,文本被提取(很差)。我想使用其他引擎 (oem 2) 看看输出是否可以提高。

import pytesseract

#this is the config that gives a poor output
config = '--tessdata-dir "C:/Program Files/Tesseract-OCR/tessdata" -l eng --oem 2 --psm 6'
text = pytesseract.image_to_string(crop, config=config)

当我尝试传递更改引擎的选项时,出现错误,提示未找到语言文件:

pytesseract.pytesseract.TesseractError: (1, "Error: Tesseract (legacy) engine requested, but components are not present in C:/Program Files/Tesseract-OCR/tessdata/eng.traineddata!! 加载语言失败 'eng 'Tesseract 无法加载任何语言!无法初始化 tesseract。")

#experimental config
config = '--psm 6'
text = pytesseract.image_to_string(crop, config=config)

如您所见,我显式传入了 eng.traineddata 的目录,但它找不到语言文件。

我有两个问题:

  1. 如何使用第一个配置文件提高 OCR 的质量?
  2. 为什么找不到语言文件?我有 eng.traineddata、eng.user-patterns 和 eng.user-words在提到的文件夹中,以及安装在那里的一些其他文件和文件夹。

我还确保我的环境变量是正确的(因此第一个配置文件可以工作)。

谢谢

最佳答案

执行OCR时,在将图像扔进Pytesseract之前对图像进行预处理是极其重要的。专门针对此图像,我们可以删除水平和垂直网格线。这是预处理后的图像:

enter image description here

Pytesseract OCR 结果

XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX
89 987 98 7 987 9 789 87 987 9
978 9 78 978 9 789 78 987 9
78 987 9 78 *978 97/8 %9 “78 978 9
78 978 978 978 978 98 9
78 978 978 978 978 978 987 978 7897
978 9 9 78 9 89 98 978 9

代码

import cv2
import pytesseract

pytesseract.pytesseract.tesseract_cmd = r"C:\Program Files\Tesseract-OCR\tesseract.exe"

# Remove horizontal and vertical lines
image = cv2.imread('1.png')
kernel_vertical = cv2.getStructuringElement(cv2.MORPH_RECT, (1,50))
temp1 = 255 - cv2.morphologyEx(image, cv2.MORPH_CLOSE, kernel_vertical)
horizontal_kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (50,1))
temp2 = 255 - cv2.morphologyEx(image, cv2.MORPH_CLOSE, horizontal_kernel)
temp3 = cv2.add(temp1, temp2)
result = cv2.add(temp3, image)

data = pytesseract.image_to_string(result, lang='eng',config='--psm 6')
print(data)

cv2.imshow('result', result)
cv2.waitKey()

关于Python pytesseract - 找不到 eng.traineddata -- oem 2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59140134/

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