easyOCR_功能测试包括

easyOCR_功能测试包括EasyOCR是一个用python编写的OCR三方库。git地址为:https://github.com/JaidedAI/EasyOCR。由于笔者从事的是java开发,对python并不熟悉,所以实际上是从python开发环境安装开始的。类似于jdk,python开发也依赖于python环境,而因为python各版本之间差异很大,很多时候不同组件依赖的是不同的python版本,甚至小版本之间也存在兼容性问题,所以网上推荐使用的是Anaconda环境管理软件。Anaconda可以隔离出多个pytho

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

EasyOCR是一个用python编写的OCR三方库。git地址为:https://github.com/JaidedAI/EasyOCR

由于笔者从事的是java开发,对python并不熟悉,所以实际上是从python开发环境安装开始的,如果读者对python比较熟悉,可以直接右上角。

类似于JDK,python开发也依赖于python环境,而因为python各版本之间差异很大,很多时候不同组件依赖的是不同的python版本,甚至小版本之间也存在兼容性问题,所以网上推荐使用的是Anaconda环境管理软件。Anaconda可以隔离出多个python环境,比如可以创建一个python3.6的环境同时再创建一个python3.7的环境,而在使用时进行选择。

安装地址:https://www.anaconda.com/products/individual

由于我们是在64位window 7下进行安装,我们选用64-Bit Graphical Installer (466 MB)。安装完成后,打开Anaconda Navigater。

easyOCR_功能测试包括

默认的root环境里有1000多个类库,我们大多用不到,如果项目使用的是这个环境,那么用PyCharm打开的时候会加载很久。所以我们还是新建一个环境,命名为easyocr,使用pyhton3.7。

Note 1: for Windows, please install torch and torchvision first by following the official instruction here https://pytorch.org. On pytorch website, be sure to select the right CUDA version you have. If you intend to run on CPU mode only, select CUDA = None.

在EasyOCR官网的git上我们可以看到上述说明,因为我们是windows环境,我们需要首先安装torch

easyOCR_功能测试包括

笔者一开始是用pip安装的,但是总是安装失败,后来发现可以用这个搜索找到,勾选后安装,由于资源较大,又受到墙的限制,下载时间很长(大概一个多小时),需要耐心等待

easyOCR_功能测试包括

安装完以后,点击绿色三角,选择Open Terminal打开命令行,该命令行即使用的是easyocr这个python环境

pip install easyocr

Jetbrains全家桶1年46,售后保障稳定

然后我们根据git的说明安装easyocr

虽然用记事本也能写python,但是习惯java后,python的语法实在是难以接受,所以一个好的IDE可以避免诸如少一个空格导致程序无法运行的麻烦,这边还是推荐使用JetBrain的PyCharm,就是IDEA的Python版。

easyOCR_功能测试包括

就像配置JDK一样,python需要配置解释程序(Interperter)。

easyOCR_功能测试包括

像上图一样配置好路径,点击ok。

easyOCR_功能测试包括

这样我们就能在已有的解释程序中选择了。

import easyocr
reader = easyocr.Reader(['ch_sim', 'en'])
result = reader.readtext('d:/test2.png')
print(result)

代码非常简单,我们一般识别中文与英文,所以是ch_sim和en。值得注意的是,等于号(=)两边要留空格,逗号(,)后面也要留空格,这对于java程序员来说有点匪夷所思,好在PyCharm有丰富的提示。

接下去我们测试一下这个类库的效果

笔者的硬件配置 CPU:i3 双核 ;内存 8G;独立显卡 无

测试用图片是pdf转换为png的图片,像素为1654×2339

结果直接死机了,可见这个类库非常吃硬件资源,相比java的Tesseract-OCR可以说是天差地别,当然python这种解释性语言性能低下可能占了很大一部分原因,据说有人测试同样的代码java性能比python高两个数量级

我只能尝试裁切图片,减小图片的大小,这次是1255×247

easyOCR_功能测试包括

在CPU风扇呼啸2分钟以后,运行出如下结果

[([[384.8713347040338, 53.16253799371492], [437.70896734843177, 62.502147801594866], [431.1286652959662, 94.83746200628508], [378.29103265156823, 86.49785219840513]], ‘buy’, 0.9799087047576904), ([[432, 54], [927, 54], [927, 94], [432, 94]], ‘true love, true friendship and good health.’, 0.11305739730596542), ([[52, 58], [382, 58], [382, 90], [52, 90]], ’17. It is true that Ioney can’, 0.03037017211318016), ([[946.9820268028815, 100.13170185094941], [1029.8601529368057, 110.95156339987997], [1023.0179731971185, 145.8682981490506], [941.1398470631945, 135.04843660012003]], ‘happy.’, 0.4561459720134735), ([[396.9011154884105, 100.1539042094367], [459.74278914557516, 108.58878442052084], [454.0988845115895, 142.84609579056328], [391.25721085442484, 134.41121557947915]], ‘long’, 0.9857617020606995), ([[615, 101], [714, 101], [714, 146], [615, 146]], ‘enough’, 0.9845817685127258), ([[52, 104], [398, 104], [398, 134], [52, 134]], ’18. A lot ofmillionaires have’, 0.23501794040203094), ([[456, 104], [616, 104], [616, 132], [456, 132]], ‘lives because’, 0.4965916574001312), ([[710, 104], [946, 104], [946, 137], [710, 137]], ‘Ioney Iakes them’, 0.24719364941120148), ([[49, 147], [1037, 147], [1037, 188], [49, 188]], ‘I9. Money may bring trouble to people when they believe money means everything.’, 0.011776169762015343), ([[49, 196], [1003, 196], [1003, 235], [49, 235]], ’20. People need to have friends to talk with and to ask for help from time to time.’, 0.008673712611198425)]

我们根据坐标整理一下顺序

17. It is true that Ioney can buy true love, true friendship and good health.

18. A lot ofmillionaires have long lives because enough Ioney Iakes them happy.

I9. Money may bring trouble to people when they believe money means everything.

20. People need to have friends to talk with and to ask for help from time to time.

错误的地方已经用红色标出了,整体正确率还是比较高的,只不过不知道为什么前两句拆的这么散

然后是中文的测试

easyOCR_功能测试包括

运行结果为

[([[44, 0], [641, 0], [641, 28], [44, 28]], ‘0你是不是也有过这样的经历:白天学习的数学公式和推导过程,’, 0.2881079316139221), ([[654, 2], [814, 2], [814, 28], [654, 28]], ‘晚上出现在梦中;’, 0.9775317907333374), ([[6, 32], [200, 32], [200, 58], [6, 58]], ‘白夭练习过英语对话,’, 0.5491944551467896), ([[210, 32], [826, 32], [826, 60], [210, 60]], “梦中你就可以非常流利地和外国人交谈’通常我们会称这种现象”, 0.35171982645988464), ([[778, 62], [826, 62], [826, 90], [778, 90]], ‘做梦’, 0.9951374530792236), ([[4, 64], [250, 64], [250, 90], [4, 90]], ‘为^日有所思,夜有所梦”‘, 0.7436116337776184), ([[274, 64], [768, 64], [768, 90], [274, 90]], ‘最近,科学家对这种现象做了进一步研究6结果发现,’, 0.6338546276092529), ([[4, 94], [390, 94], [390, 122], [4, 122]], ‘真的可以帮助我们学习和记忆新学的知识,’, 0.9657901525497437), ([[402, 94], [648, 94], [648, 122], [402, 122]], ‘梦中的你的确是在学习的6’, 0.47411224246025085)]

整理后为

0你是不是也有过这样的经历:白天学习的数学公式和推导过程,晚上出现在梦中;白夭练习过英语对话,梦中你就可以非常流利地和外国人交谈’通常我们会称这种现象为^日有所思,夜有所梦最近,科学家对这种现象做了进一步研究6结果发现,做梦真的可以帮助我们学习和记忆新学的知识,梦中的你的确是在学习的6

文字的识别还是非常准确的,但是标点符号大部分都不对,因为官网示例的都是告示板,一般是不会有标点符号的,这方面的缺陷也可以理解

最后我们尝试一下古文的识别

easyOCR_功能测试包括

运行结果为

[([[67, 4], [263, 4], [263, 29], [67, 29]], ‘不修德礼而专权骄恣’, 0.7633501887321472), ([[277, 4], [369, 4], [369, 29], [277, 29]], ‘危亡之祸’, 0.9936830997467041), ([[384, 4], [668, 4], [668, 32], [384, 32]], ‘可翘足而待;愿明府一心王室,’, 0.8909436464309692), ([[678, 4], [838, 4], [838, 30], [678, 30]], ‘勿与交通6″太守’, 0.35901787877082825), ([[6, 6], [54, 6], [54, 30], [6, 30]], ‘之亲’, 0.9937400221824646), ([[6, 32], [76, 32], [76, 58], [6, 58]], ‘固遣之,’, 0.5406157970428467), ([[88, 32], [180, 32], [180, 58], [88, 58]], ‘邰不能止’, 0.9094278812408447), ([[192, 32], [578, 32], [578, 58], [192, 58]], ‘请求自行,许之6邰遂所在迟留以观其变’, 0.35050278902053833), ([[592, 32], [700, 32], [700, 58], [592, 58]], ‘行至扶风0,’, 0.6177576780319214), ([[712, 32], [810, 32], [810, 58], [712, 58]], ‘而宪就国6’, 0.7293225526809692), ([[5, 56], [182, 56], [182, 86], [5, 86]], ‘凡交通者皆坐免官,’, 0.9450605511665344), ([[194, 60], [370, 60], [370, 84], [194, 84]], ‘汉中太守独不与焉’, 0.974287748336792)]

整理后为

之亲不修德礼而专权骄恣危亡之祸可翘足而待;愿明府一心王室,勿与交通6″太守固遣之邰不能止请求自行,许之6邰遂所在迟留以观其变行至扶风0而宪就国6凡交通者皆坐免官,汉中太守独不与焉

同样,文字的识别还是非常准确的,但是标点符号与特殊符号基本无法识别

总结:

EasyOCR对于文字(无论英文还是中文)的识别准确率很高,但是对于标点符号与特殊符号的识别准确率很低。此外,该三方库对硬件设备的要求很高,官方推荐支持CUDA的独立显卡可以提高运行效率。随着图片的增大,运行时间呈指数增长。

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • C#网络编程(Socket编程)「建议收藏」

    C#网络编程(Socket编程)「建议收藏」一、Socket网络编程1.Socket是什么?在计算机通信领域,Socket被译为“套接字”。它是计算机之间进行通信的一种约定或一种方式。通过Socket这种约定可以接收到其他计算机的数据,也可以向其他计算机发送数据。2.本质是编程接口(API),对于TCP/IP的封装,TCP/IP也提供了可供程序员做网络开发所用的接口3.作用Socket的英文原意是“插座”,的意思,通常在计算机编…

    2022年7月13日
    15
  • QQ农场开挂_农场游戏源码

    QQ农场开挂_农场游戏源码  QQ空间\校友农场外挂源代码12009年08月18日星期二11:41{///////////////////////////////////////////////////////////////////////////////                           声明//本代码不针对任何团体和个人,只为学习\交流\促进游戏的发展而发布//…

    2025年11月5日
    5
  • Drool(转)[通俗易懂]

    Drool(转)[通俗易懂]什么是Drools(译者增加:什么是Drools,摘自drools.org)Drools是一个基于CharlesForgy’s的Rete算法的,专为Java语言所设计的规则引擎。Rete算法应用于面向对象的接口将使基于商业对象的商业规则的表达更为自然。Drools是用Java写的,但能同时运行在Java和.Net上。DroolsDrools被设计为可插入式的语言实现。目前规则能用…

    2025年7月7日
    4
  • request.getRealPath_java response

    request.getRealPath_java responseequest.getRealPath()这个方法已经不推荐使用了,代替方法是:request.getSession().getServletContext().getRealPath()从Request对象中可以获取各种路径信息,以下例子:假设请求的页面是index.jsp,项目是WebDemo,则在index.jsp中获取有关request对象的各种路径信息如下Stringpath=requ…

    2026年1月25日
    4
  • Java分页显示(旅游线路)

    Java分页显示(旅游线路)

    2021年11月11日
    39
  • 四旋翼飞行器姿态控制(四轴飞行器姿态解算)

    笔者最近在做四旋翼飞行器的研究工作,所以在这里总结一下关于姿态解算的小知识点。知识点比较零碎,涉及到:飞行器导航的基本原理、四元数的理解、加速度计和陀螺仪的理解、欧拉角的理解、飞行器的数据融合方案、卡尔曼滤波等。不足之处还望多多指教,目前的工作进展是已经将硬件搭建出来,正在撰写飞行控制代码。欢迎个人前来讨论和批评指出~

    2022年4月17日
    67

发表回复

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

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