如何使用OCR检测图像中的下标编号?

问题描述 投票:2回答:1

我正在通过tesseract绑定将pytesseract用于OCR。不幸的是,在尝试提取包含下标样式数字的文本时遇到了困难-下标数字被解释为字母。

例如,在基本图像中:

enter image description here

我想将文本提取为“ CH3”,即我不担心知道数字3是图像中的下标。

我使用tesseract的尝试是:

import cv2
import pytesseract

img = cv2.imread('test.jpeg')

# Note that I have reduced the region of interest to the known 
# text portion of the image
text = pytesseract.image_to_string(
    img[200:300, 200:320], config='-l eng --oem 1 --psm 13'
)
print(text)

不幸的是,这将错误地输出

'CHs'

根据'CHa'参数,也可能获得psm

我怀疑此问题与文本的“基线”在整个行中不一致有关,但我不确定。

如何从这种类型的图像中准确提取文本?

更新-2020年5月19日

[看到Achintha Ihalage的答案后,该答案没有为tesseract提供任何配置选项,我探索了psm选项。

[由于感兴趣的区域是已知的(在这种情况下,我使用EAST检测来定位文本的边界框),因此psmtesseract配置选项在我的原始代码中将文本视为单行,可能没有必要。对上面边界框给出的感兴趣区域运行image_to_string会得到输出

CH

3

当然,可以很容易地对其进行处理以获得CH3

python ocr tesseract python-tesseract
1个回答
0
投票

这是因为下标的字体太小。您可以使用cv2PIL之类的python包来调整图像的大小,并按照以下代码对OCR使用调整后的图像大小。

import pytesseract
import cv2

img = cv2.imread('test.jpg')
img = cv2.resize(img, None, fx=2, fy=2)  # scaling factor = 2

data = pytesseract.image_to_string(img)
print(data)

输出:

CH3
© www.soinside.com 2019 - 2024. All rights reserved.