大家好!我是CSDN的Python新手博主~ 前三篇分享了文件整理、个人记账工具和新手项目推荐,很多小伙伴说“想练点能解决实际需求、还能接触新知识点的项目”。今天就带来一个超实用的新手实战——批量OCR图片文字提取工具!
日常工作学习中,经常会遇到“截图里的文字想复制”“扫描件的内容要编辑”的场景,手动输入太麻烦。这个工具能自动识别图片中的中文/英文文字,支持单张/批量提取,还能保存到文档里,全程用基础语法+简单第三方库实现,新手也能快速上手~
一、本次学习目标
- 掌握第三方库的安装与使用(PIL+pytesseract);
- 学会批量处理文件(遍历文件夹图片);
- 理解OCR识别的基础流程;
- 巩固文件读写、异常处理的核心知识点。
二、前期准备:安装依赖库与OCR引擎
这个项目需要两个核心工具:图片处理库(PIL)和OCR识别库(pytesseract),步骤如下(新手跟着做,别慌!):
1. 安装Python库
打开命令行(Windows按Win+R输入cmd,Mac打开终端),输入以下命令安装:
# 安装图片处理库(PIL的升级版,用于读取图片)pipinstallpillow -i https://pypi.tuna.tsinghua.edu.cn/simple# 安装OCR识别库(调用Tesseract引擎)pipinstallpytesseract -i https://pypi.tuna.tsinghua.edu.cn/simple- 用清华源(-i 后面的链接)下载更快,避免超时失败。
2. 安装Tesseract OCR引擎(关键!)
pytesseract只是“桥梁”,真正实现识别的是Tesseract引擎,必须单独安装:
- 下载引擎:去Tesseract官网下载安装包(Windows选64位版本,如tesseract-ocr-w64-setup-v5.3.0.exe);
- 安装注意:
- 勾选“Additional language data”中的“Chinese (Simplified)”(中文识别包),否则无法识别中文;
- 记住安装路径(比如默认的
C:\Program Files\Tesseract-OCR),后续要配置环境变量。
- 配置环境变量(Windows):
- 右键“此电脑”→属性→高级系统设置→环境变量→系统变量→Path→编辑→新建,粘贴Tesseract的安装路径(如
C:\Program Files\Tesseract-OCR); - 配置完成后,关闭命令行重新打开(环境变量生效)。
- 右键“此电脑”→属性→高级系统设置→环境变量→系统变量→Path→编辑→新建,粘贴Tesseract的安装路径(如
三、实战:实现批量OCR文字提取工具
1. 核心需求
- 支持识别单张图片(JPG/PNG格式);
- 支持批量识别文件夹内所有图片;
- 识别结果自动保存到txt文档,按“图片名-识别结果”格式存储。
2. 完整代码(可直接复制运行)
importpytesseractfromPILimportImageimportos# 配置Tesseract引擎路径(如果环境变量配置成功,这行可以注释掉;失败则手动填写安装路径)# pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe'defocr_single_image(image_path,output_txt):"""识别单张图片的文字并写入txt"""try:# 打开图片img=Image.open(image_path)# 识别文字(lang='chi_sim'表示识别中文,lang='eng'识别英文,默认中英文混合)text=pytesseract.image_to_string(img,lang='chi_sim')# 获取图片文件名image_name=os.path.basename(image_path)# 写入txt文件(追加模式)withopen(output_txt,'a',encoding='utf-8')asf:f.write(f"==={image_name}的识别结果 ===\n")f.write(text.strip()+"\n\n")print(f"✅{image_name}识别完成!")exceptExceptionase:print(f"❌{image_path}识别失败:{str(e)}")defocr_batch_images(folder_path,output_txt):"""批量识别文件夹内的图片"""# 先清空之前的识别结果(可选,根据需求调整)ifos.path.exists(output_txt):os.remove(output_txt)# 遍历文件夹内所有文件forfile_nameinos.listdir(folder_path):# 筛选图片格式(JPG/PNG)iffile_name.lower().endswith(('.jpg','.jpeg','.png')):file_path=os.path.join(folder_path,file_name)ocr_single_image(file_path,output_txt)print(f"\n🎉 批量识别完成!结果已保存到:{output_txt}")if__name__=="__main__":# 请根据自己的需求修改以下路径# 选项1:批量识别文件夹(推荐)target_folder=r"C:\Users\你的用户名\Desktop\需要识别的图片"# 图片文件夹路径output_file="OCR识别结果.txt"# 输出的txt文件名# 选项2:识别单张图片(注释上面两行,取消下面两行注释)# single_image_path = r"C:\Users\你的用户名\Desktop\测试图片.png"# ocr_single_image(single_image_path, "单张图片识别结果.txt")# 执行批量识别ocr_batch_images(target_folder,output_file)3. 关键代码拆解(新手必看)
(1)库的作用
PIL.Image:用于打开和处理图片,支持JPG、PNG等常见格式;pytesseract:调用Tesseract引擎,将图片中的文字转为字符串;os:遍历文件夹、处理文件路径,和之前的文件整理工具用法一致。
(2)核心函数解析
ocr_single_image(image_path, output_txt):处理单张图片:Image.open(image_path):打开目标图片;pytesseract.image_to_string(img, lang='chi_sim'):核心识别函数,lang='chi_sim'指定中文识别(英文用lang='eng',混合识别可去掉lang参数);try-except:捕获异常(比如图片损坏、路径错误),避免程序崩溃,新手要养成用异常处理的习惯。
ocr_batch_images(folder_path, output_txt):批量处理:os.listdir(folder_path):遍历文件夹内所有文件;file_name.lower().endswith(('.jpg', '.png')):筛选图片格式,避免处理非图片文件;- 先删除旧的识别结果txt,再用追加模式写入新结果,保证文件整洁。
(3)路径配置说明
- 图片文件夹路径:Windows系统路径用
r"路径"( raw字符串,避免反斜杠转义),比如r"C:\Users\张三\Desktop\图片"; - 如果环境变量配置失败,取消
pytesseract.tesseract_cmd的注释,填入你的Tesseract安装路径(比如C:\Program Files\Tesseract-OCR\tesseract.exe)。
四、运行效果演示
- 准备图片:在桌面创建“需要识别的图片”文件夹,放入几张带中文的截图/图片;
- 修改代码中的
target_folder路径,运行脚本; - 运行完成后,会在脚本所在文件夹生成“OCR识别结果.txt”,内容如下:
=== 工作截图.png 的识别结果 === Python新手实战项目:OCR文字提取工具 核心功能:批量识别图片中的中文/英文文字 适合场景:截图文字提取、扫描件编辑、文档电子化 === 笔记图片.png 的识别结果 === 今日学习计划: 1. 掌握PIL库的图片读取方法 2. 理解OCR识别的基本流程 3. 完成批量处理功能优化五、新手避坑小贴士
- 引擎安装问题:
- 一定要勾选“Chinese (Simplified)”,否则中文识别是乱码;
- 环境变量配置后,必须关闭命令行重新打开,否则pytesseract找不到引擎。
- 图片识别效果:
- 图片越清晰、文字越大,识别准确率越高(模糊图片建议先裁剪/放大);
- 避免图片中有复杂背景(比如花纹、多色底纹),尽量用纯色背景的图片。
- 路径错误:
- 文件夹路径一定要写对,比如用户名不能写错(比如“张三”写成“李四”);
- 路径中的中文不要有特殊字符(比如emoji、符号),否则会报错。
- 库安装失败:
- 用清华源下载(命令后加
-i https://pypi.tuna.tsinghua.edu.cn/simple); - Windows系统如果提示“缺少dll文件”,可以百度搜索对应的dll文件,放到
C:\Windows\System32文件夹下。
- 用清华源下载(命令后加
六、功能扩展(新手进阶方向)
如果想提升工具实用性,可以尝试添加这些功能(后续文章会详细讲):
- 支持PDF文件的文字提取(需要安装
pdf2image库,将PDF转为图片再识别); - 识别结果按图片顺序编号,支持关键词搜索;
- 生成Excel文件,按“图片名、识别结果、识别时间”分类存储;
- 增加GUI界面(用
tkinter库),不用修改代码,点击按钮选择文件夹即可识别。
七、总结与后续规划
这篇文章通过“批量OCR工具”,带大家接触了Python第三方库的使用、OCR识别、批量文件处理等实用技能。新手学习的关键还是“边做边查”,遇到问题先百度(比如“pytesseract中文乱码”),大部分问题都有成熟的解决方案。
接下来的系列文章,我会继续分享新手友好的实战项目,比如:
- PDF批量处理工具(合并、拆分、转图片);
- 简易GUI桌面工具(用tkinter实现可视化操作);
- 自动化截图+OCR识别(一键提取屏幕文字)。
如果这篇文章对你有帮助,欢迎点赞收藏+关注,也可以在评论区分享你的使用体验或遇到的问题(比如“引擎安装失败”“识别准确率低”),我会一一解答~ 我们一起从新手慢慢进阶!