前言
百度、阿里等的OCR接口需要联网环境,并且超过免费/试用次数后需要付费。一般政务项目因为信息安全要求都部署在独立内网,有没有离线免费的OCR实现方案?下文基于EasyOCR实现一步部署,可下载直接使用。
EasyOCR
EasyOCR支持离线部署,可免费使用(支持Apache-2.0 license协议),并且在配置不高的机器中也可以使用(可以使用CPU计算)。EasyOCR支持80多种流行语言,如拉丁文、中文、阿拉伯文、英文等。EasyOCR部署和使用都非常简单,可以命令行启动,也可以python代码运行,只有几行简单代码就可以实现文字识别功能。
安装
- python或conda环境搭建,参考python环境搭建
- conda create -n ocr
创建conda虚拟环境
- conda activate ocr
进入虚拟环境
- conda install python=3.10
安装python3.9以上版本
- pip install easyocr
安装EasyOCR
- pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu124
按照官方文档重新安装torch机器学习库,如果不重新安装程序运行中可能调用不到GPU,如果没有GPU或不使用GPU默认使用CPU计算
- torch官方文档地址
https://pytorch.org/get-started/locally/
- 使用代理网络安装,加
--proxy=http://host:port
参数
- torch官方文档地址
使用
- Python程序方式识别
easyocr.Reader
会自动下载模型, 默认存放在~/.EasyOCR/model
目录,如C:\Users\Administrator\.EasyOCR\model
- 如果手动下载模型,可以用
model_storage_directory
参数,指定模型目录,easyocr.Reader(['ch_sim', 'en'], model_storage_directory="models")
reader.readtext
如果不指定detail
参数,还会输出边界框(bounding box)、可信度(confident level)等数据。
import easyocrreader = easyocr.Reader(['ch_sim', 'en'])while True:file_name = input("请输入图片文件名(输入q退出程序):")if file_name.lower() == 'q':print("程序退出...")breaktry:result = reader.readtext(file_name, detail=0)if result:print("识别结果:")for text in result:print(text)else:print("未识别到文本...")except Exception as e:print(f"识别错误:{e}。")
- 命令行方式识别
- 命令行方式启动一次识别一次,python代码更灵活启动一次可循环识别多次,以后还可升级为web api方式调用。
- 识别命令,
easyocr -l ch_sim en -f C:\Users\Administrator\Desktop\test.png --detail=0 --gpu=True --model_storage_directory=d:\models
- -f 指定要识别的图片
- --model_storage_directory 指定模型路径,这个参数可忽略
与百度OCR对比效果
百度OCR识别结果
EasyOCR识别结果
原图
程序和模型文件已打包,可下载解压后打开run.bat
一键运行(python环境已集成到压缩包中),关注下面公众号回复ocr下载。