python 识别图片上的数字

本文详细介绍如何在Windows环境下安装并配置Pytesseract用于图像验证码识别。内容包括tesseract-OCR引擎的安装步骤、环境变量配置及常见问题解决方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Python 3.6 版本 Pytesseract 图像验证码识别

环境:

(1) win7 64位
(2) Idea
(3) python 3.6
(4) pip install pillow
<&nbsp>pip install pytesseract
(5) 识别引擎tesseract-ocr

安装

安装tesseract-ocr的识别引擎
第一步:下载安装包
根据https://github.com/UB-Mannheim/tesseract/wiki,找到下载安装包。
这里写图片描述
我下载的是64位,根据自己需要下载
第二步:安装
直接点击下载好的tesseract-ocr-w64-setup-v4.0.0-beta.1.20180608.exe文件,点击下一步,下一步,安装完成。
第三步:配置环境变量
复制你安装的路径,我的是安装在C:\Program Files (x86)\Tesseract-OCR,界面如下:
这里写图片描述
进入“计算机/属性”,点击“高级系统设置”,点击环境变量,找到path,点击编辑,在末尾粘贴你刚才复制的路径,{粘贴时,你要给原有的信息末尾添加;分号}
这里写图片描述
配置完毕后,点击保存。

打开命令行windows + R 输入cmd 打开 在命令行里面输入tesseract -v 配置成功会显示当前的tesseract版本
这里写图片描述

测试读取图片上的数字
这里写图片描述
这里写图片描述
KO!!!!!

出现问题:

解决方法:
添加环境变量内容
1.在环境变量里面增加一个TESSDATA_PREFIX变量名,变量值还是安装tesseract的路径。我这里还是放的我之前的路径C:\Program Files (x86)\Tesseract-OCR;
2.修改python文件下的lib里面生成的一个pytesseract.py文件
这里写图片描述
这里写图片描述
修改里面的一个路径内容:ps:(tesseract_cmd = ‘D:/Program Files/Tesseract-OCR/tesseract.exe’)网上也有人说是斜杠的问题,可以修改双斜杠或者反斜杠
这里写图片描述

### 实现图片数字识别的方法 为了实现图片中的数字识别,可以利用OCR技术来完成此任务。以下是具体的解决方案: #### 安装必要的依赖项 在开始之前,需要安装一些必需的Python模块以及系统工具。这些工具包括`pytesseract`、`Pillow`和`tesseract-ocr`。 可以通过以下命令安装所需的软件包: ```bash sudo apt install tesseract-ocr tesseract-ocr-chi-sim python3-tesserocr pip install pytesseract pillow opencv-python ``` 上述命令会安装Tesseract OCR引擎及其Python接口`pytesseract`,并提供图像处理支持[^3]。 #### 加载与预处理图像 加载图像后通常需要对其进行一定的预处理操作以提高OCR的效果。常见的预处理方法包括灰度化、二值化和去噪等。这一步骤有助于减少背景干扰,突出目标字符。 代码示例如下: ```python import cv2 from PIL import Image def preprocess_image(image_path): image = cv2.imread(image_path, cv2.IMREAD_GRAYSCALE) # 将图像转换为灰度图 _, binary_image = cv2.threshold(image, 0, 255, cv2.THRESH_BINARY_INV + cv2.THRESH_OTSU) # 自动阈值分割 return binary_image ``` 这段代码实现了读取图像文件,并将其转化为适合OCR分析的形式[^2]。 #### 执行OCR识别 经过预处理之后,可调用`pytesseract.image_to_string()`函数执行实际的文字提取工作。该函数能够解析输入图像内的文本内容。 下面是完整的代码片段用于演示整个流程: ```python import pytesseract from PIL import Image # 设置 Tesseract 可执行程序路径 (如果未自动检测到的话) pytesseract.pytesseract.tesseract_cmd = r'/usr/bin/tesseract' def ocr_recognition(preprocessed_image): text = pytesseract.image_to_string(Image.fromarray(preprocessed_image), config='--psm 6 --oem 3 -c tessedit_char_whitelist=0123456789') return text.strip() if __name__ == "__main__": img_path = 'path/to/your/image.png' processed_img = preprocess_image(img_path) result = ocr_recognition(processed_img) print(f"Recognized number is {result}") ``` 这里特别指定了只允许识别阿拉伯数字作为配置参数传递给`image_to_string`函数,从而进一步提升准确性[^1]。 ---
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值