☰
easyocr:基于Pytorch的光学字符识别神器
2026/9/25 16:53:17 网站建设 项目流程

文章目录

    • 安装并下载模型
    • 试用
    • 类和方法

安装并下载模型

easyocr是基于PyTorch的光学字符识别(Optical Character Recongnition, OCR)工具,开箱即用,支持从自然场景图像到密集文档的文本提取。在确认安装Pytorch之后,用pip安装即可。

pip install easyocr -i https://pypi.tuna.tsinghua.edu.cn/simple

easyocr在使用时需要从github下载模型,考虑到github经常抽风,这里推荐离线下载,下载完成后,可将.pth文件放进C:\Users\用户名\.EasyOCR\model\路径下。

共有两类文件,一个是检测模型,地址为

https://github.com/JaidedAI/EasyOCR/releases/download/pre-v1.1.6/craft_mlt_25k.zip https://github.com/JaidedAI/EasyOCR/releases/download/v1.6.0/pretrained_ic15_res18.zip https://github.com/JaidedAI/EasyOCR/releases/download/v1.6.0/pretrained_ic15_res50.zip

另一类是语言模型,语言列表为EasyOCR Model Hub。

试用

下面以下面这张刚截的图片为例

运行结果如下

importeasyocr path="easyocr.png"# 图片路径reader=easyocr.Reader(['ch_sim','en'])result=reader.readtext(path)forresinresult:print(f"{res[2]:.2}:{res[1]}")''' 0.86: import easyocr 1.0: path 0.45: easyocr. Png" 0.77: 图片路径 0.75: peader 0.3: easyocr .Reader ( [ 'ch_sim' 0.8: pesult 0.69: reader.readtext (path ) '''

其中,readtext方法的返回值是结果列表,其中每一项都是一个三元组,依次是文本框的坐标,识别结果以及置信度。

类和方法

【Reader】是easyocr的核心类,【readtext】为Reader的核心方法。二者签名如下

classReader(lang_list,gpu=True,model_storage_directory=None,user_network_directory=None,detect_network="craft",recog_network='standard',download_enabled=True,detector=True,recognizer=True,verbose=True,quantize=True,cudnn_benchmark=False):defreadtext(image,decoder='greedy',beamWidth=5,batch_size=1,workers=0,allowlist=None,blocklist=None,detail=1,rotation_info=None,paragraph=False,min_size=20,contrast_ths=0.1,adjust_contrast=0.5,filter_ths=0.003,text_threshold=0.7,low_text=0.4,link_threshold=0.4,canvas_size=2560,mag_ratio=1.,slope_ths=0.1,ycenter_ths=0.5,height_ths=0.5,width_ths=0.5,y_ths=0.5,x_ths=1.0,add_margin=0.1,threshold=0.2,bbox_min_score=0.2,bbox_min_size=3,max_candidates=0,output_format='standard')

参数非常多,除了刚刚已经用到的lang_list和image之外,还有几个参数相对比较重要,其中Reader类的参数

  • gpu设为True时启用GPU。否则用CPU。
  • ``model_storage_directory**模型路径**。自定义预训练权重(.pth文件)的存放目录。设为None时使用系统默认路径(如~/.EasyOCR/model`)

readtext的参数。

  • allowlist白名单。强制模型仅输出该字符串中包含的字符。例如识别车牌时设为'0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'
  • blocklist黑名单。强制模型忽略该字符串中包含的字符。
  • detail输出详细度。1返回[边界框坐标, 识别文本, 置信度];设为0则仅返回纯文本字符串列表。

其他参数含义如下

参数含义备注
user_network_directory自定义网络路径用于加载用户自行训练的网络结构定义文件。
detect_network检测算法指定文本检测网络,默认为"craft",也可选其他支持的轻量级变体 [[2]]。
recog_network识别算法指定文本识别网络。可选"standard"或"generation2"(g2 版本通常推理更快) [[2]]。
download_enabled自动下载模型缺失时是否允许联网下载。离线部署必须设为False。
detector启用检测若设为False,则跳过检测阶段,假定输入图像已是裁剪好的单行文本,直接执行识别。
recognizer启用识别若设为False,则仅执行文本框检测,不进行文字识别。
verbose日志输出是否在控制台打印模型加载和运行的详细信息。
quantize模型量化是否对模型进行 INT8 量化,可减少内存占用并提升 CPU 推理速度,但可能轻微损失精度。
cudnn_benchmarkcuDNN 优化若输入图像尺寸固定,设为True可让 cuDNN 自动寻找最优卷积算法,提升 GPU 速度。
参数含义备注
decoder解码策略默认为贪心解码'greedy'。可选束搜索'beamsearch',精度更高但更慢
beamWidth束搜索宽度仅在beamsearch解码时生效,控制搜索树的分支数量。
batch_size批处理大小大于 1 可显著提升 GPU 识别速度,但会线性增加显存消耗
workers数据加载线程PyTorch DataLoader 使用的线程数,0 表示使用主线程。
paragraph段落合并是否根据空间位置将相邻的检测框合并为完整的段落文本

检测阶段(Detection)超参数注:通常无需修改,仅在特定场景(如极小文本、低对比度图像)识别失败时微调。

  • text_threshold(0.7): 文本像素的置信度阈值,高于此值判定为文本。
  • low_text(0.4): 文本区域的下限阈值,用于连接相邻的弱文本像素。
  • link_threshold(0.4): 连接相邻字符区域形成完整文本行的阈值。
  • canvas_size(2560): 检测网络输入图像的最大边长。超大图像会被等比缩放至此尺寸。
  • mag_ratio(1.0): 图像放大比例。处理极小文本时可设为1.5或更高。
  • min_size(20): 忽略面积或边长小于此像素值的检测框,用于过滤噪点。
  • contrast_ths(0.1): 判定图像为“低对比度”的阈值。
  • adjust_contrast(0.5): 当图像对比度低于contrast_ths时,自动增强到的目标对比度。
  • filter_ths(0.003): 基于字符高度的后处理过滤阈值,剔除异常比例的检测框。
  • bbox_min_score(0.2): 检测框的最低置信度得分,低于此值的框被丢弃。
  • bbox_min_size(3): 检测框允许的最小像素尺寸。
  • max_candidates(0): 检测阶段保留的最大候选框数量,0表示无限制。

识别与几何后处理超参数

  • rotation_info(None): 列表,如[90, 180, 270]。指定模型尝试旋转图像的角度,用于处理多方向或倒置文本。
  • add_margin(0.1): 在裁剪检测框周围额外添加的边距比例(10%),以保留更多字符边缘上下文。
  • slope_ths,ycenter_ths,height_ths,width_ths,y_ths,x_ths: 均为浮点数。仅在paragraph=True时生效,用于计算两个文本框在斜率、中心点距离、宽高比上的几何相似度,以决定是否合并为同一段落。
  • output_format('standard'): 输出数据格式,可选'standard'或'dict'(返回结构化字典)。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询