ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

easyocr:基于Pytorch的光学字符识别神器

easyocr:基于Pytorch的光学字符识别神器 文章目录安装并下载模型试用类和方法安装并下载模型easyocr是基于PyTorch的光学字符识别(Optical Character Recongnition, OCR)工具开箱即用支持从自然场景图像到密集文档的文本提取。在确认安装Pytorch之后用pip安装即可。pip install easyocr -i https://pypi.tuna.tsinghua.edu.cn/simpleeasyocr在使用时需要从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 patheasyocr.png# 图片路径readereasyocr.Reader([ch_sim,en])resultreader.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,gpuTrue,model_storage_directoryNone,user_network_directoryNone,detect_networkcraft,recog_networkstandard,download_enabledTrue,detectorTrue,recognizerTrue,verboseTrue,quantizeTrue,cudnn_benchmarkFalse):defreadtext(image,decodergreedy,beamWidth5,batch_size1,workers0,allowlistNone,blocklistNone,detail1,rotation_infoNone,paragraphFalse,min_size20,contrast_ths0.1,adjust_contrast0.5,filter_ths0.003,text_threshold0.7,low_text0.4,link_threshold0.4,canvas_size2560,mag_ratio1.,slope_ths0.1,ycenter_ths0.5,height_ths0.5,width_ths0.5,y_ths0.5,x_ths1.0,add_margin0.1,threshold0.2,bbox_min_score0.2,bbox_min_size3,max_candidates0,output_formatstandard)参数非常多除了刚刚已经用到的lang_list和image之外还有几个参数相对比较重要其中Reader类的参数gpu设为True时启用GPU。否则用CPU。model_storage_directory**模型路径**。自定义预训练权重.pth文件的存放目录。设为None时使用系统默认路径如~/.EasyOCR/modelreadtext的参数。allowlist白名单。强制模型仅输出该字符串中包含的字符。例如识别车牌时设为0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZblocklist黑名单。强制模型忽略该字符串中包含的字符。detail输出详细度。1返回[边界框坐标, 识别文本, 置信度]设为0则仅返回纯文本字符串列表。其他参数含义如下参数含义备注user_network_directory自定义网络路径用于加载用户自行训练的网络结构定义文件。detect_network检测算法指定文本检测网络默认为craft也可选其他支持的轻量级变体 [[2]]。recog_network识别算法指定文本识别网络。可选standard或generation2g2 版本通常推理更快 [[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: 均为浮点数。仅在paragraphTrue时生效用于计算两个文本框在斜率、中心点距离、宽高比上的几何相似度以决定是否合并为同一段落。output_format(standard): 输出数据格式可选standard或dict返回结构化字典。
返回列表