摘要
EasyOCR 是一个python版的文字识别工具。目前支持80中语言的识别。 框架如下:
图像预处理(去噪、色彩饱和度、尖锐处理) CRAFT文字检测 中间处理(倾斜处理等) 文字识别 后续处理 输出结果
安装
安装稳定版
pip install easyocr
安装最新版本:
pip install git+ https: // github. com/ JaidedAI/ EasyOCR. git
安装完成后,可以通过easyocr.__version__查看版本号:
import easyocr
print ( easyocr. __version__)
测试
第一次安装使用,easyocr会下载默认模型。 等待的时间比较长,而且容易失败。 如果一直失败,可以采用另一种方式,登录到网站:https://www.jaided.ai/easyocr/modelhub/ 下载模型。 下载检测器模型 下载识别器模型 将下载的模型文件解压后拷贝到当前登录的用户目录的.EasyOCR\model文件夹下,Windows系统为:C:\Users\用户名.EasyOCR\model。 识别模型(语言包)的文件名称和后面看到的语言类型并不是完全对应的,ch_sim对应简体中文(zh_sim_g2),en对应英文(english_g2)。
调用方式
import easyocr
reader = easyocr. Reader( [ 'ch_sim' , 'en' ] )
result = reader. readtext( 'chinese.jpg' )
输出结果:
[ ( [ [ 189 , 75 ] , [ 469 , 75 ] , [ 469 , 165 ] , [ 189 , 165 ] ] , '愚园路' , 0.3754989504814148 ) ,
( [ [ 86 , 80 ] , [ 134 , 80 ] , [ 134 , 128 ] , [ 86 , 128 ] ] , '西' , 0.40452659130096436 ) ,
( [ [ 517 , 81 ] , [ 565 , 81 ] , [ 565 , 123 ] , [ 517 , 123 ] ] , '东' , 0.9989598989486694 ) ,
( [ [ 78 , 126 ] , [ 136 , 126 ] , [ 136 , 156 ] , [ 78 , 156 ] ] , '315' , 0.8125889301300049 ) ,
( [ [ 514 , 126 ] , [ 574 , 126 ] , [ 574 , 156 ] , [ 514 , 156 ] ] , '309' , 0.4971577227115631 ) ,
( [ [ 226 , 170 ] , [ 414 , 170 ] , [ 414 , 220 ] , [ 226 , 220 ] ] , 'Yuyuan Rd.' , 0.8261902332305908 ) ,
( [ [ 79 , 173 ] , [ 125 , 173 ] , [ 125 , 213 ] , [ 79 , 213 ] ] , 'W' , 0.9848111271858215 ) ,
( [ [ 529 , 173 ] , [ 569 , 173 ] , [ 569 , 213 ] , [ 529 , 213 ] ] , 'E' , 0.8405593633651733 ) ]
方法详解
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) :是否加载识别模型。
readtext()参数详解
image (string, numpy array, byte) : 输入图像; decoder (string, default = ‘greedy’):选项有 ‘greedy’、‘beamsearch’ 和 ‘wordbeamsearch’; beamWidth (int, default = 5) : 当解码器 = ‘beamsearch’ 或 ‘wordbeamsearch’ 时要保留多少光束; batch_size (int, default = 1) : batch_size>1 将使 EasyOCR 更快但使用更多内存; worker (int, default = 0) : 数据加载器中使用的编号线程; allowlist (string) : 强制 EasyOCR 只识别字符的子集。对特定问题有用(例如车牌等); blocklist (string) : 字符的块子集。如果给定了允许列表,则此参数将被忽略。 detail (int, default = 1): 将此设置为 0 以进行简单输出; paragraph (bool, default = False):将结果合并到段落中; min_size (int, default = 10) : 过滤文本框小于最小值(以像素为单位); rotation_info (list, default = None) : 允许 EasyOCR 旋转每个文本框并返回具有最佳置信度分数的文本框。符合条件的值为 90、180 和 270。例如,对所有可能的文本方向尝试 [90, 180 ,270]。 contrast_ths (float, default = 0.1) : 对比度低于此值的文本框将被传入模型 2 次。首先是原始图像,其次是对比度调整为“adjust_contrast”值。结果将返回具有更高置信度的那个; adjust_contrast (float, default = 0.5) : 低对比度文本框的目标对比度级别。 text_threshold (float, default = 0.7) : 文本置信度阈值 low_text (float, default = 0.4) : 文本下限分数 link_threshold (float, default = 0.4) : 链接置信度阈值 canvas_size (int, default = 2560) :最大图像尺寸。大于此值的图像将被缩小。 mag_ratio (float, default = 1) :图像放大率 slope_ths (float, default = 0.1) - 考虑合并的最大斜率 (delta y/delta x)。低值意味着不会合并平铺框。 ycenter_ths (float, default = 0.5) - y 方向的最大偏移。不应该合并不同级别的框。 height_ths (float, default = 0.5) - 盒子高度的最大差异。不应合并文本大小非常不同的框。 width_ths (float, default = 0.5) - 合并框的最大水平距离。 add_margin (float, default = 0.1) - 将边界框向所有方向扩展某个值。这对于具有复杂脚本的语言(例如泰语)很重要。 x_ths (float, default = 1.0) - 当段落=True 时合并文本框的最大水平距离。 y_ths (float, default = 0.5) - 当段落 = True 时合并文本框的最大垂直距离。