设置白名单:让tesseract-OCR只识别指定内容

有时我们需要用tesseract-ocr只识别指定类型的数据,如:仅识别英文字母或数字。此时可设置白名单,让tesseract-ocr只输出我们需要的结果。
1.打开tesseract-ocr安装路径下的tessdata/configs/digits文件,可以看到里面有一个tessedit_char_whitelist,将其设置成我们需要得到的识别结果。
如:tessedit_char_whitelist ABCD
2.在调用命令时,需要加上我们设置的文件名:tesseract xxx.png outfilename -psm 6 digits

注:

tesseract提供了OCR引擎模式。有如下四种
  • 0 =仅限原始Tesseract
  • 1 =只有神经网络LSTM
  • 2 =Tesseract + LSTM
  • 3 =基于可用的默认值

目前LSTM是无法支持白名单的

我们需要选择第0种模式,指令如下:

tesseract --oem 0 1.png outfileName digits
注意:使用第0种模式会降低识别准确率
<think>好的,用户想要寻找关于使用Tesseract-OCR进行数字识别的代码示例。我需要先理解他们的需求,然后提供相关的示例代码和说明。首先,我应该回顾一下用户提供的引用内容,看看是否有相关的信息可以利用。 引用[1]提到Tesseract-OCR在处理复杂验证码时可能需要预处理,比如灰度化和二值化。引用[2]和[3]则分别提到了Java和.NET中使用Tesseract的方法,以及语言数据文件的GitHub链接。用户需要的是具体的数字识别示例代码,可能涉及Python或其他语言。 考虑到用户之前提到了Python的快速排序示例,可能他们更倾向于Python的代码。但引用中提到的示例是Java和.NET,所以需要确认用户偏好的语言。不过,用户的问题没有明确指定语言,因此最好提供Python的示例,因为Python在OCR应用中较为常见,同时补充其他语言的示例可能更好。 接下来,我需要确保提供的代码符合用户提到的预处理步骤,比如灰度化和二值化,以提高数字识别的准确率。同时,要指出需要安装Tesseract引擎及相应的语言包,特别是数字专用的配置文件。 另外,用户可能遇到的常见问题包括安装依赖、路径设置以及如何处理图像预处理。因此,在代码示例中需要包含这些步骤,并给出注意事项,比如限制只识别数字,使用白名单参数,以及处理图像质量的问题。 最后,生成相关问题时要围绕数字识别的优化、预处理方法、多语言支持以及与其他库的比较等方面,帮助用户进一步探索解决方案。</think>### Tesseract-OCR 数字识别示例代码 以下是使用 **Python** 调用 Tesseract-OCR 进行数字识别的示例代码(需提前安装 `pytesseract` 和 `Pillow` 库): ```python from PIL import Image import pytesseract # 设置 Tesseract 路径(根据实际安装位置调整) pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe' # 读取图像并预处理(灰度化、二值化) image = Image.open('number_image.png') gray_image = image.convert('L') # 转为灰度图 threshold = 128 # 阈值可调整 binary_image = gray_image.point(lambda p: 255 if p > threshold else 0) # 二值化 # 识别数字(配置为仅识别数字) text = pytesseract.image_to_string( binary_image, config='--psm 6 -c tessedit_char_whitelist=0123456789' ) print("识别结果:", text) ``` #### 关键步骤说明: 1. **预处理**:将图像转为灰度图后二值化,可有效去除干扰[^1]。 2. **参数配置**: - `--psm 6`:假设图像为单行文本。 - `tessedit_char_whitelist=0123456789`:限制识别字符仅为数字。 3. **依赖安装**: ```bash pip install pytesseract Pillow # 需额外安装 Tesseract-OCR 本体(Windows/Mac/Linux 需单独安装) ``` #### 注意事项: -识别效果不佳,可尝试调整阈值或使用更复杂的预处理(如去噪、形态学操作)。 - 对于印刷体数字,准确率较高;手写体需训练自定义模型[^2]。 --- ### 其他语言示例 #### Java 示例(需 `tess4j` 库): ```java import net.sourceforge.tess4j.*; public class DigitRecognition { public static void main(String[] args) { ITesseract instance = new Tesseract(); instance.setDatapath("tessdata"); // 设置语言数据路径 instance.setTessVariable("tessedit_char_whitelist", "0123456789"); try { String result = instance.doOCR(new File("number_image.png")); System.out.println("识别结果: " + result); } catch (TesseractException e) { e.printStackTrace(); } } } ``` ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值