1 easyocr安装
pip install easyocr
EasyOCR 的模型是基于 pytorch 框架训练的,在 easyocr 下载同时会下载一些其它附加 python 包,例如 pytorch, torchvision 等,时间需要久一点(需要注意下,easyocr 默认安装的是 pytorch 的 cpu 版本,需要 gpu 配置的小伙伴可以搜一下 pytorch-gpu 相关教程进行配置)。
可以会出现以下问题
1、ImportError: DLL load failed: The specified module could not be found
该问题是由于 C++ 运行包丢失造成的,解决方案,终端输入以下命令安装即可
pip install msvc-runtime
2、train error :ImportError: cannot import name ‘Optional’ **
该问题是由于 pytorch 与 torchvision 版本不符造成的,安装 easyocr 时默认安装的 torchvision 版本为 0.5.0,对应 pytorch 相兼容的版本应该为 1.4.0,但通过下方命令安装时。
pip install torch==1.14.0#会安装失败,解决方法:通过另一种 安装命令即可pip install torch==1.4.0+cpu torchvision==0.5.0+cpu -f https://download.pytorch.org/whl/torch_stable.htm
3、**user** 忘记了哈哈哈哈
pip install easyocr --user -i https://pypi.douban.com/simple
导入库问题就可以解决了
2 使用方式
第一步:创建Reader实现,第二步:readtxt()方法检测和识别
reader参数
lang_list (list):识别语言代码,比如[‘ch_sim’,’en’]分别表示简体中文和英文。
gpu (bool, string, default = True) :是否使能GPU,只有安装了GPU版本才有效。
model_storage_directory (string, default = None) :模型存储位置,依次查找系统变量EASYOCR_MODULE_PATH (preferred)、MODULE_PATH (if defined)表示的路径或者~/.EasyOCR/路径。
download_enabled (bool, default = True):如果没有对应模型文件时,自动下载模型。
user_network_directory (bool, default = None) :用户自定义识别网络的路径,如果没有指明,则在MODULE_PATH + ‘/user_network’ (~/.EasyOCR/user_network)目录中查找。
recog_network (string, default = ‘standard’) :替代标准模型,使用自定义的识别网络。
detector (bool, default = True) :是否加载检测模型。
recognizer (bool, default = True) :是否加载识别模型。
举一个简单的例子:
首先创建一个reader对象,传入要使用的语言包(识别模型),然后在reader对象的readtext方法中传入要识别的文件名称:

import easyocr#创建reader实现reader = easyocr.Reader(['ch_sim','en'])#readtxt()方法检测和识别result = reader.detect('test.png')print(result)
([[151, 101], [195, 101], [195, 149], [151, 149]], '西', 0.9816301184856115)([[569, 71], [635, 71], [635, 131], [569, 131]], '东', 0.9986620851098884)([[218, 92], [535, 92], [535, 191], [218, 191]], '诗和远方路', 0.8088406614287519)([[137, 217], [177, 217], [177, 257], [137, 257]], 'W', 0.8304899668428476)([[209, 217], [525, 217], [525, 257], [209, 257]], 'Poetry And The Places Afar Rd。', 0.40033782611925706)([[571, 207], [611, 207], [611, 251], [571, 251]], 'C', 0.1553293824532922)
readtext()方法返回一个元组,包含了多个元素,每个元素由识别到文字信息的边框,文字内容,可信度等3部分组成。

3 提取信息上传到txt
把识别的三部分拆分上传到txt格式
import easyocrfrom pathlib import Pathfile_url='地址.png'save_dir='.'split_symbol=''reader = easyocr.Reader(['ch_sim','en'],gpu=False,model_storage_directory='./model')result = reader.readtext(file_url)result.sort(key=lambda x: x[0][0][1]) # 按竖直方向,进行排序==>进行分行处理content = []row_space = 15item = [result[0]] # 首先放入第一个元素for i in result[1:]:if row_space >= i[0][0][1] - item[-1][0][0][1] >= 0:item.append(i)else:content.append(item)item = [i]content.append(item)filemane = Path(file_url).name.split('.')[0]with open(f'{save_dir}/{filemane}.txt', "w", encoding='utf8') as t:for i in content: # i 为每一行的内容i.sort(key=lambda x: x[0][0][0]) # 对每行的内容进行先后排序for r in i:# print(r)t.write(r[1] + split_symbol)t.write("\n")
当然这个比百度API识别的慢,这样再有照片转文本就可以用了!




