EasyOCR,识别图片中的文字真的so easy
原文链接:http://www.juzicode.com/image-ocr-python-easyocr
桔子菌之前在 pytesseract提取识别图片中的文字 中介绍过怎么在Python中使用tesseract提取和识别图片中的文字,今天再来聊一聊EasyOcr,它也是一款非常优秀的OCR包,使用起来是相当地easy。
1、安装easyocr包
这里以windows系统为例,需要先安装pytorch,在pytorch官网可以根据语言版本、操作系统等信息找到安装方法:
pip3 install torch torchvision torchaudio
安装easyocr:
pip3 install easyocr
安装完成后,可以通过easyocr.__version__查看版本号:
import easyocr
print(easyocr.__version__)
2、安装检测模型、识别模型(语言包)
如果事先没有安装检测模型和识别模型,第一次执行脚本时会自动下载2种模型文件:
这种方式下载速度较慢,而且容易出错导致下载中断,可以通过手动方式下载、安装。
进入esayocr官网选择需要的模型下载(Jaided AI: EasyOCR model hub)。
首先下载文本检测模型:
接下来下载识别模型,识别模型对应了各种语言包,下图是简体中文和英文的识别模型:
将下载的模型文件解压后拷贝到当前登录的用户目录的.EasyOCR\model文件夹下,Windows系统为:C:\Users\yourname\.EasyOCR\model,其中yourname是登录用户名。
【注】这里下载的识别模型(语言包)的文件名称和后面看到的语言类型并不是完全对应的,比如在代码中的语言类型ch_sim对应简体中文(zh_sim_g2),en对应英文(english_g2)。
3、使用方法
EsayOcr的使用正如其名非常地简单,就是2个步骤,第1步创建Reader()实例,第2步用readtxt()方法检测和识别。
创建Reader()实例
初始化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()方法。
检测与识别readtext()方法
下面是一个最简单的应用例子,首先创建一个reader对象,传入要使用的语言包(识别模型),然后在reader对象的readtext方法中传入要识别的文件名称:
#juzicode.com / vx:桔子code
import easyocr
reader = easyocr.Reader(['ch_sim','en'])
result = reader.readtext('road-poetry.png')
for res in result:print(res)
运行结果:
([[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部分组成。
除了前面例子中readtext()传入文件名称,也可以在readtext()方法中传入图像的numpy数组,比如用opencv读取图片文件得到的numpy数组:
#juzicode.com / vx:桔子code
import easyocr
import cv2
reader = easyocr.Reader(['ch_sim','en'])
img = cv2.imread('road-poetry.png' )
result = reader.readtext(img)color=(0,0,255)
thick=3
for res in result:print(res)pos = res[0]text = res[1]for p in [(0,1),(1,2),(2,3),(3,0)]:cv2.line(img,pos[p[0]],pos[p[1]],color,thick)
cv2.imwrite('bx-road-poetry.jpg',img)
运行结果:
([[151, 101], [195, 101], [195, 149], [151, 149]], '西', 0.9805448761688105)
([[569, 71], [635, 71], [635, 131], [569, 131]], '东', 0.9985224701960114)
([[217, 91], [534, 91], [534, 194], [217, 194]], '诗和远方路', 0.8750403596327564)
([[137, 217], [177, 217], [177, 257], [137, 257]], 'W', 0.7520859053705777)
([[209, 217], [523, 217], [523, 257], [209, 257]], 'Poetry And The Places Afar Rd。', 0.3012721541954036)
([[571, 207], [611, 207], [611, 251], [571, 251]], 'C', 0.15253169048338933)
第3种方法是在readtext()中传入读出的原始字节内容,注意图片文件是以rb方式读出:
#juzicode.com / vx:桔子code
import easyocr
reader = easyocr.Reader(['ch_sim','en'])
with open('road-poetry.png','rb') as pf:img = pf.read()result = reader.readtext(img)for res in result:print(res)
运行结果:
([[151, 101], [195, 101], [195, 149], [151, 149]], '西', 0.673960519698312)
([[569, 71], [635, 71], [635, 131], [569, 131]], '东', 0.9128537192685862)
([[218, 92], [535, 92], [535, 191], [218, 191]], '诗和远方路', 0.7941057755221305)
([[137, 217], [177, 217], [177, 257], [137, 257]], 'W', 0.7182424534268108)
([[209, 217], [525, 217], [525, 257], [209, 257]], 'Poetry And The Places Afar Rd。', 0.5591090091224509)
([[571, 207], [611, 207], [611, 251], [571, 251]], 'C', 0.1532075452826911)
EasyOcr,so easy,你学废了吗?
推荐阅读:
模糊照片修复神器GFPGAN
新鲜上架的Python3.10,来个match-case尝尝鲜
在Python中使用微信扫码功能
一行代码深度定制你的专属二维码(amzqr)
来看看怎么用OpenCV解构Twitter大牛的视觉错觉图
EasyOCR,识别图片中的文字真的so easy相关推荐
- 手写体识别代码_Python识别图片中的文字
一.前言 不知道大家有没有遇到过这样的问题,就是在某个软件或者某个网页里面有一篇文章,你非常喜欢,但是不能复制.或者像百度文档一样,只能复制一部分,这个时候我们就会选择截图保存.但是当我们想用到里面的 ...
- python识别图片上的文字_Python如何识别图片中的文字 【转】
Python如何识别图片中的文字,这里给个案例并附上详细步骤: 模块包的安装: 1.安装PIL:pip install Pillow 2.安装pytesser3:pip install pytesse ...
- 用 Python 识别图片中的文字
一.前言 不知道大家有没有遇到过这样的问题,就是在某个软件或者某个网页里面有一篇文章,你非常喜欢,但是不能复制.或者像百度文档一样,只能复制一部分,这个时候我们就会选择截图保存.但是当我们想用到里面的 ...
- cmd删除txt部分文字_Python识别图片中的文字
一.前言 不知道大家有没有遇到过这样的问题,就是在某个软件或者某个网页里面有一篇文章,你非常喜欢,但是不能复制.或者像百度文档一样,只能复制一部分,这个时候我们就会选择截图保存.但是当我们想用到里面的 ...
- python如何识别中文_python如何识别图片中的文字
python如何识别图片中的文字,这里给个案例并附上详细步骤: 模块包的安装: 1.安装PIL:pip install Pillow 2.安装pytesser3:pip install pytesse ...
- java 图片识别_JAVA识别图片中的文字
最近在需求上有一个识别图片中的文字功能,查询了不少资料,发现可以使用tess4j识别图像文字:话不多说现在开始: 首先创建Spring Boot项目:导入以下依赖 net.sourceforge.te ...
- C# pdf 转图片 and 创建百度AI文字识别应用(识别图片中的文字和数字)
/// <summary>/// pdf 转图片/// </summary>public static void Turnpicture(){string str = &quo ...
- python 图片识别_Python—识别图片中的文字
一.前言 不知道大家有没有遇到过这样的问题,就是在某个软件或者某个网页里面有一篇文章,你非常喜欢,但是不能复制.或者像百度文档一样,只能复制一部分,这个时候我们就会选择截图保存.但是当我们想用到里面的 ...
- python图片识别是否p过_python 基于百度aip库 实现识别图片中的文字
最终效果 1. 实现环境 win10系统 + pycharm社区版 + anaconda3 2. 实现步骤 step 1. 安装baidu-aip库 step 2. 进入百度ai官网 http://a ...
- Python批量识别图片中的文字并保存到txt文档中
Python OCR工具pytesseract,之前是惠普的产品,被Google收了之后就给开源了. 1.需要下载并安装Google Tesseract,下载地址看图片上有,要下载4.0.0版本的 2 ...
最新文章
- 优秀!广州“土博士”刚毕业,即获海外名校终身教职!
- Jquery LigerUI
- lucene4.5近实时搜索
- MongoDB 5.0新特性概览
- ECCV 2020 大规模实例分割挑战赛(LVIS Challenge)冠军方案
- ufw禁止IP访问ubuntu服务器
- Python面试准备
- spring配置属性的两种方式
- Conficker病毒新变种卷土重来 可关闭杀毒软件
- FPGA的Zynq 7000学习--基于黑金AX7010开发板的Hello World 实验
- qq企业邮箱怎么删除邮件服务器,腾讯企业邮箱如何删除邮件,有什么要注意的呢?...
- 一点点读懂thermal(一)
- android fastboot 刷机教程,已进入fastboot怎么刷机教程
- 【答学员问】虚拟机不能正常启动,提示找不到VMX二进制文件
- 如何看台式机计算机编号,如何查看台式电脑的主机编号和型号
- RAITE Hypervisor介绍
- Python 三维网格体素化
- Docker内时区查询和修改方法
- 学计算机专业用什么u盘,介绍几款比较不错的U盘品牌-电脑自学网
- 计算机游戏 25攻略,长生劫游戏过关攻略 长生劫第1-25关通关攻略大全
热门文章
- 2021-2023年个人发展规划整理
- 电影《功夫熊猫1》中的管理知识
- Annoying Present
- input file选择图片后显示(FileReader)
- Python:实现binomial distribution二项分布算法(附完整源码)
- linux平台使用yum安装mysql
- 什么是超级立方体,HyperCube
- UCF Local Programming Contest Round 1A 【2021-7-20】
- 前端速成:双月Java之旅(week5)_day4
- iPhone手机使用:苹果新款手机(iPhone X、iPhone XS Max、iPhone XR等)关机、截屏等快捷键