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

标签 python image ocr tesseract python-tesseract

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

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/

相关文章:

python - 在 Sphinx 文档中保留 setUp 和 tearDown 单元测试方法

javascript - HTML Canvas图片转Base64问题

javascript - 我想在固定大小的 div 元素中使用 Aspect-Fill Image Slider

python - 如何使用 Tesseract 对图像进行 OCR

python - 如何使用 XPath 提取与给定模式不匹配的项目?

python - 如何在 python + twisted 中检测 HTTP 请求?

python - 删除全为零的字符串 - pandas python

ios - 如何在 iOS 9 中使用 Swift 从 CMSampleBuffer 中提取像素数据进行处理?

java - 在 OCR(光学字符识别)之前,您会推荐什么软件进行图像增强?

javascript - 使用 ionic1 (apk) 与使用 ocrad.js 的 Chrome(调试器)进行图像处理