Pytesseract OCR 多个配置选项
Pytesseract OCR multiple config options
我在使用 pytesseract 时遇到了一些问题。我需要将 Tesseract 配置为它被配置为接受单个数字,同时也只能接受数字,因为数字零经常与 'O'.
混淆
像这样:
target = pytesseract.image_to_string(im,config='-psm 7',config='outputbase digits')
tesseract-4.0.0a
以下支持psm
。如果要识别单个字符,设置psm = 10
。如果您的文本仅由数字组成,您可以设置 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.
这里是 image_to_string
使用多个参数的示例。
target = pytesseract.image_to_string(image, lang='eng', boxes=False, \
config='--psm 10 --oem 3 -c tessedit_char_whitelist=0123456789')
希望对您有所帮助。
您遇到问题的原因是字符限制在 4.0 版中不起作用。您必须强制使用传统模式 (oem 0) 以限制找到的字符。在 tesseract 团队的某处有一个他们尚未解决的错误。
Tesseract 版本 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
Note:Tested +-60x60px 的二进制输入图像,单个字符
页面分割模式:
仅限方向和脚本检测 (OSD)。
使用 OSD 自动分页。
自动页面分割,但没有 OSD 或 OCR。 (未实施)
全自动页面分割,但没有OSD。 (默认)
假设有一列可变大小的文本。
假设一个统一的垂直对齐文本块。
假设一个统一的文本块。
将图像视为单个文本行。
将图像视为单个单词。
将图像视为圆圈中的单个单词。
将图像视为单个字符。
文字稀疏。尽可能多地查找不分先后顺序的文本。
带有 OSD 的稀疏文本。
原始线。将图像视为单个文本行,绕过特定于 Tesseract 的黑客攻击。
OCR 引擎模式:
- 仅限旧版引擎。
- 仅限神经网络 LSTM 引擎。
- 传统 + LSTM 引擎。
- 默认,基于可用的。
我在使用 pytesseract 时遇到了一些问题。我需要将 Tesseract 配置为它被配置为接受单个数字,同时也只能接受数字,因为数字零经常与 'O'.
混淆像这样:
target = pytesseract.image_to_string(im,config='-psm 7',config='outputbase digits')
tesseract-4.0.0a
以下支持psm
。如果要识别单个字符,设置psm = 10
。如果您的文本仅由数字组成,您可以设置 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.
这里是 image_to_string
使用多个参数的示例。
target = pytesseract.image_to_string(image, lang='eng', boxes=False, \
config='--psm 10 --oem 3 -c tessedit_char_whitelist=0123456789')
希望对您有所帮助。
您遇到问题的原因是字符限制在 4.0 版中不起作用。您必须强制使用传统模式 (oem 0) 以限制找到的字符。在 tesseract 团队的某处有一个他们尚未解决的错误。
Tesseract 版本 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
Note:Tested +-60x60px 的二进制输入图像,单个字符
页面分割模式:
仅限方向和脚本检测 (OSD)。
使用 OSD 自动分页。
自动页面分割,但没有 OSD 或 OCR。 (未实施)
全自动页面分割,但没有OSD。 (默认)
假设有一列可变大小的文本。
假设一个统一的垂直对齐文本块。
假设一个统一的文本块。
将图像视为单个文本行。
将图像视为单个单词。
将图像视为圆圈中的单个单词。
将图像视为单个字符。
文字稀疏。尽可能多地查找不分先后顺序的文本。
带有 OSD 的稀疏文本。
原始线。将图像视为单个文本行,绕过特定于 Tesseract 的黑客攻击。
OCR 引擎模式:
- 仅限旧版引擎。
- 仅限神经网络 LSTM 引擎。
- 传统 + LSTM 引擎。
- 默认,基于可用的。