我在使用pytesseract时遇到了一些问题。我需要将Tesseract配置为配置为接受单个数字,同时也只能接受数字,因为数字零通常与“O”混淆。
像这样:
target = pytesseract.image_to_string(im,config='-psm 7',config='outputbase digits')
非常感谢,
尼尔
答案 0 :(得分:35)
tesseract-4.0.0a
supports below psm
. If you want to have single character recognition, set psm = 10
. And if your text consists of numbers only, you can set tessedit_char_whitelist=0123456789
.
Page segmentation modes:
0 Orientation and script detection (OSD) only.
1 Automatic page segmentation with OSD.
2 Automatic page segmentation, but no OSD, or OCR.
3 Fully automatic page segmentation, but no OSD. (Default)
4 Assume a single column of text of variable sizes.
5 Assume a single uniform block of vertically aligned text.
6 Assume a single uniform block of text.
7 Treat the image as a single text line.
8 Treat the image as a single word.
9 Treat the image as a single word in a circle.
10 Treat the image as a single character.
11 Sparse text. Find as much text as possible in no particular order.
12 Sparse text with OSD.
13 Raw line. Treat the image as a single text line,
bypassing hacks that are Tesseract-specific.
Here is a sample usage of image_to_string
with multiple parameters.
target = pytesseract.image_to_string(image, lang='eng', boxes=False, \
config='--psm 10 --oem 3 -c tessedit_char_whitelist=0123456789')
Hope this helps.
答案 1 :(得分:3)
页面分割模式:
仅限方向和脚本检测 (OSD)。
使用 OSD 自动进行页面分割。
自动页面分割,但没有 OSD 或 OCR。 (未实现)
全自动页面分割,但没有 OSD。 (默认)
假设有一列大小可变的文本。
假设有一个统一的垂直对齐文本块。
假设有一个统一的文本块。
将图像视为单个文本行。
将图像视为单个单词。
将图像视为圆圈中的单个单词。
将图像视为单个字符。
稀疏文本。查找尽可能多的文本,没有特定的顺序。
带有 OSD 的稀疏文本。
原始线。将图像视为单个文本行,绕过 Tesseract 特定的黑客攻击。
OCR 引擎模式:
答案 2 :(得分:2)
您遇到麻烦的原因是因为字符限制在4.0版本中不起作用。您必须强制使用旧版模式(OEM 0)使其限制找到的字符。 tesseract团队中某个地方存在一个尚未解决的错误。
答案 3 :(得分:0)
Tesseract version 5.0.0-alpha 可以使用以下命令:(使用 psm=13 和 oem=1 或 3)
pytesseract.image_to_string(export_image ,lang='eng', config='--psm 13 --oem 1 -c tessedit_char_whitelist=ABCDEFG0123456789')
请注意,采用了 eng
训练数据集:https://github.com/tesseract-ocr/tessdata_fast/blob/master/eng.traineddata
注意:在 +-60x60px 单字符二进制输入图像上测试