EasyOCR,识别图片中的文字真的so easy

EasyOCR,识别图片中的文字真的so easy原文链接 http www juzicode com image ocr python easyocr 桔子菌之前在 pytesseract 提取识别图片中的文字中介绍过怎么在 Python 中使用 tesseract 提取和识别图片中的文字 今天再来聊一聊 EasyOcr 它也是一款非常优秀的 OCR 包 使用起来是相当地 easy 1 安装 easyocr 包这里以 windows 系统为例 需要先安装 pytorch 在 pytorch 官网可以根据语言版本 操作系统等信息找到安装方法 pip3insta

原文链接:http://www.juzicode.com/image-ocr-python-easyocr

桔子菌之前在 pytesseract提取识别图片中的文字 中介绍过怎么在Python中使用tesseract提取和识别图片中的文字,今天再来聊一聊EasyOcr,它也是一款非常优秀的OCR包,使用起来是相当地easy。

1、安装easyocr包

这里以windows系统为例,需要先安装pytorch,在pytorch官网可以根据语言版本、操作系统等信息找到安装方法:

EasyOCR,识别图片中的文字真的so easy

pip3 install torch torchvision torchaudio

安装easyocr:

pip3 install easyocr

安装完成后,可以通过easyocr.__version__查看版本号:

import easyocr print(easyocr.__version__)

2、安装检测模型、识别模型(语言包)

如果事先没有安装检测模型和识别模型,第一次执行脚本时会自动下载2种模型文件:

EasyOCR,识别图片中的文字真的so easy

EasyOCR,识别图片中的文字真的so easy

这种方式下载速度较慢,而且容易出错导致下载中断,可以通过手动方式下载、安装。

进入esayocr官网选择需要的模型下载(Jaided AI: EasyOCR model hub)。

首先下载文本检测模型:

EasyOCR,识别图片中的文字真的so easy

接下来下载识别模型,识别模型对应了各种语言包,下图是简体中文和英文的识别模型:

EasyOCR,识别图片中的文字真的so easy

将下载的模型文件解压后拷贝到当前登录的用户目录的.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方法中传入要识别的文件名称:

EasyOCR,识别图片中的文字真的so easy

#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.56115) ([[569, 71], [635, 71], [635, 131], [569, 131]], '东', 0.98884) ([[218, 92], [535, 92], [535, 191], [218, 191]], '诗和远方路', 0.87519) ([[137, 217], [177, 217], [177, 257], [137, 257]], 'W', 0.28476) ([[209, 217], [525, 217], [525, 257], [209, 257]], 'Poetry And The Places Afar Rd。', 0.) ([[571, 207], [611, 207], [611, 251], [571, 251]], 'C', 0.32922)

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.88105) ([[569, 71], [635, 71], [635, 131], [569, 131]], '东', 0.60114) ([[217, 91], [534, 91], [534, 194], [217, 194]], '诗和远方路', 0.27564) ([[137, 217], [177, 217], [177, 257], [137, 257]], 'W', 0.05777) ([[209, 217], [523, 217], [523, 257], [209, 257]], 'Poetry And The Places Afar Rd。', 0.54036) ([[571, 207], [611, 207], [611, 251], [571, 251]], 'C', 0.)

EasyOCR,识别图片中的文字真的so easy

第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.8312) ([[569, 71], [635, 71], [635, 131], [569, 131]], '东', 0.85862) ([[218, 92], [535, 92], [535, 191], [218, 191]], '诗和远方路', 0.21305) ([[137, 217], [177, 217], [177, 257], [137, 257]], 'W', 0.68108) ([[209, 217], [525, 217], [525, 257], [209, 257]], 'Poetry And The Places Afar Rd。', 0.24509) ([[571, 207], [611, 207], [611, 251], [571, 251]], 'C', 0.26911)

EasyOcr,so easy,你学废了吗?

推荐阅读:

模糊照片修复神器GFPGAN

新鲜上架的Python3.10,来个match-case尝尝鲜

在Python中使用微信扫码功能

一行代码深度定制你的专属二维码(amzqr)

来看看怎么用OpenCV解构Twitter大牛的视觉错觉图

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/212206.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 下午8:34
下一篇 2026年3月18日 下午8:35


相关推荐

  • 微信机器人的制作 原来如此简单

    微信机器人的制作 原来如此简单

    2021年11月10日
    56
  • Windows+pycharm安装pytorch

    Windows+pycharm安装pytorch最近要参加一个比赛 需要用到深度学习的框架 老师建议我们用 pytorch 但是安装的时候总是发现各种错误 解决方案是 去 pytorch 官网生成下载的命令 然后再 cmd 上执行这里我们发现有 CUDA 的选项 这就需要我们安装 cuda 怎么安装 cuda 首先我们要知道我们的独立显卡的型号 然后我们要知道我们的显卡是否支持 cuda 点击这里发现是支持的 算力为 6 1

    2026年3月19日
    2
  • opencv识别多条形码数字_opencv测试代码

    opencv识别多条形码数字_opencv测试代码这其实是一个小工程完成的功能: 使用摄像头采集图像进行预处理(检测部分) 提取出预处理的条形码图像(识别部分) 将条形码进行存入数据库(存储部分) 首先接到这个图像识别的小工程需要先确定这个工程的最初输入,和最后输出,输入就是普通的RGB图像,输出是数据库文件。其中需要完成的过程,就是我需要做得功能,检测部分、识别部分和存储部分,话不多说,上部分代码:/…

    2025年6月27日
    7
  • Cocos2d-x Box2D物理引擎编译设置

    Cocos2d-x Box2D物理引擎编译设置

    2022年1月15日
    48
  • Tensorflow API 讲解——tf.estimator.Estimator

    Tensorflow API 讲解——tf.estimator.EstimatorclassEstimat builtins object 介绍 Estimator 类 用来训练和验证 TensorFlow 模型 Estimator 对象包含了一个模型 model fn 这个模型给定输入和参数 会返回训练 验证或者预测等所需要的操作节点 所有的输出 检查点 事件文件等 会写入到 model dir 或者其子文件夹中 如果 model dir 为空 则默认

    2026年3月19日
    3
  • LoadRunner11.00安装&使用教程[通俗易懂]

    LoadRunner11.00安装&使用教程[通俗易懂]本教程分为四部分内容:安装序言:由于LoadRunner12.02或者12.53版本是HP公司推出的自带免费50个虚拟用户进行压力测试的版本,目的为了工程师去学习与了解的该工具。为了增大压力(增加虚拟用户数)到达高并发的性能测试,采用LoadRunner11.00,增加对应的Lice…

    2025年11月11日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号