Pytesseract OCR 多个配置选项
- 2024-12-18 08:39:00
- admin 原创
- 185
问题描述:
我在使用 pytesseract 时遇到了一些问题。我需要配置 Tesseract,使其配置为接受单个数字,同时也只能接受数字,因为数字零经常与“O”混淆。
像这样:
target = pytesseract.image_to_string(im,config='-psm 7',config='outputbase digits')
解决方案 1:
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, \n config='--psm 10 --oem 3 -c tessedit_char_whitelist=0123456789')
解决方案 2:
页面分割模式:
仅限方向和脚本检测 (OSD)。
使用OSD自动分割页面。
自动页面分割,但没有 OSD 或 OCR。(未实现)
全自动页面分割,但没有 OSD。(默认)
假设单列文本的大小可变。
假设单一均匀的文本块垂直对齐。
假设单一统一的文本块。
将图像视为单行文本。
将图像视为一个单词。
将图像视为圆圈内的单个单词。
将图像视为单个字符。
稀疏文本。尽可能多地查找不按特定顺序排列的文本。
带有 OSD 的稀疏文本。
原始行。将图像视为单行文本,绕过特定于 Tesseract 的黑客攻击。
OCR 引擎模式:
仅限旧式引擎。
仅限神经网络 LSTM 引擎。
遗留 + LSTM 引擎。
默认,基于可用内容。
解决方案 3:
您遇到问题的原因是字符限制在 4.0 版本中不起作用。您必须强制使用旧模式 (oem 0) 来限制找到的字符。Tesseract 团队中有一个尚未解决的错误。
解决方案 4:
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
注意:在具有单个字符的 +-60x60px 的二进制输入图像上进行测试
扫码咨询,免费领取项目管理大礼包!