文字识别OCR开源框架的对比--Tesseract vs EasyOCR
前言:
OCR文字识别在目前有着比较好的应用,也出现了很多的文字识别软件,但软件是面向用户的。对于我们技术人员来说,有时难免需要在计算机视觉任务中加入文字识别,如车牌号识别,票据识别等,因此软件对我们是没用的,我们需要自己实现文字识别。
在文字识别方面,主要有两款主流的开源框架Tesseract和EasyOCR。本文讨论了 Tesseract 和 EasyOCR 使用 Python API 之间的主要区别,包括安装、使用示例、准确率和推理速度方面的对比。
使用示例
Tesseract
安装: pip install pytesseract pillow
使用示例:
|
from PIL import Image import pytesseract text=pytesseract.image_to_string(Image.open(filename)) print(text) |
这只是一个简单的使用示例,在实际应用中,图像并非理想情况,还需要对图像进行一定的预处理以更好地识别。如去除椒盐噪声,去除干扰物,如在车牌识别中还会利用矩形框检测框出车牌所在位置,并放大,以更好地进行车牌号识别。
EasyOCR
安装:pip install easyocr
使用示例
|
import easyocr reader = easyocr.Reader(['ch_sim', 'en']) text = reader.readtext('filename') print(text) |
注:easyocr还会输出文字在图片中的坐标。
准确率
在参考链接[2]中进行了一项实验,使用1000张含字母的图片和1000张含数字的图片分别使用Tesseract和EasyOCR进行测试。
含字母的输入图像如下图所示:

含数字的输入图像如下图所示:

经过测试得出下面两个开源框架的准确率对比

如上图所示,Tesseract 在字母识别方面做得更好,而 EasyOCR 在数字识别方面做得更好。
此外,它们在识别某些字符时存在完全不同的问题。例如,Tesseract 倾向于将诸如 29977.23 之类的东西识别为 2997.23,或者将carrier 识别为 cartier。另一方面,EasyOCR 更有可能将 94268.1 识别为 94268,或者advances 识别为 atvances。这两个单词识别的举例表明这两个框架对单个字母的识别倾向。
推理速度

在速度方面,Tesseract 在 CPU 上的表现优于 EasyOCR,而 EasyOCR 在 GPU 上的表现更好。
结论
Tesseract 在字母识别方面表现更好,而 EasyOCR 在数字方面表现更好。如果图片包含大量字母,可以考虑 Tesseract。此外,EasyOCR 的输出是小写的。如果大写对处理很重要,还应该使用 Tesseract。另一方面,如果图片中包含大量数字,建议 EasyOCR。
参考链接
https://blog.csdn.net/fatesunlove/article/details/107691665
https://medium.com/swlh/ocr-engine-comparison-tesseract-vs-easyocr-729be893d3ae
在公众号中回复关键字 “技术总结” 可获取以下文章的汇总pdf。

其它文章
文字识别OCR开源框架的对比--Tesseract vs EasyOCR的更多相关文章
- 【图片识别】java 图片文字识别 ocr (转)
http://www.cnblogs.com/inkflower/p/6642264.html 最近在开发的时候需要识别图片中的一些文字,网上找了相关资料之后,发现google有一个离线的工具,以下为 ...
- java 图片文字识别 ocr
最近在开发的时候需要识别图片中的一些文字,网上找了相关资料之后,发现google有一个离线的工具,以下为java使用的demo 在此之前,使用这个工具需要在本地安装OCR工具: 下面一个是一定要安装的 ...
- 图像文字识别(OCR)用什么算法小结
说明:主要考虑深度学习的方法,传统的方法不在考虑范围之内. 1.文字识别步骤 1.1detection:找到有文字的区域(proposal). 1.2classification:识别区域中的文字. ...
- 如何大批量的识别图片上的文字,批量图片文字识别OCR软件系统
软件不需要安装,直接双击打开就可以用,废话不多说直接上图好了,方便说明问题 批量图片OCR(批量名片识别.批量照片识别等)识别,然后就下来研究了一下,下面是成果 使用步骤:打开单个图片识别,导入文件夹 ...
- python实现中文图片文字识别--OCR about chinese text--tesseract
0.我的环境: win7 32bits python 3.5 pycharm 5.0 1.相关库 安装pillow: pip install pillow 安装tesseract: tesseract ...
- 有道自然语言翻译和文字识别OCR(图片文字识别)接口调用
官网 http://ai.youdao.com 文档地址 http://ai.youdao.com/docs/doc-ocr-api.s#p01 在Python中调用api. #/usr/bin/en ...
- 如何精准实现OCR文字识别?
欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由云计算基础发表于云+社区专栏 前言 2018年3月27日腾讯云云+社区联合腾讯云智能图像团队共同在客户群举办了腾讯云OCR文字识别-- ...
- PHP:基于百度大脑api实现OCR文字识别
有个项目要用到文字识别,网上找了很多资料,效果不是很好,偶然的机会,接触到百度大脑.百度大脑提供了很多解决方案,其中一个就是文字识别,百度提供了三种文字识别,分别是银行卡识别.身份证识别和通用文字识别 ...
- JAVA 进行图片中文字识别(准确度高)!!!
OCR 识别文字项目 该项目 可以进行两种方式进行身份证识别 1. 使用百度接口 1.1 application-dev.yml配置 ocr: # 使用baiduOcr 需要有Ocr服务器 使用百度需 ...
随机推荐
- 【开源技术分享】无需流媒体服务,让浏览器直接播放rtsp/rtmp的神器:EasyMedia
不同于市面上其他需要各种转发到流媒体服务的中间件来说,EasyMedia不需要依赖任何nginx-rtmp,srs,zlmediakit等等第三方流媒体服务,只需要你有rtsp或者rtmp等等协议的视 ...
- “可变的”tuple
来看一个"可变的"tuple: >>> t = ('a', 'b', ['A', 'B']) >>> t[2][0] = 'X' >> ...
- [bug] ERROR: Can't get master address from ZooKeeper; znode data == null
排错 访问bigdata111:50070没显示 jps发现hdfs的namenode没启动 查看namenode日志发现9000端口被占用 查找占用端口的进程 杀死进程,或在配置文件中更改端口号 参 ...
- tigervnc报错
tigervnc报错
- WordPress的config.php不小心删掉
[原文件] <?php /** * WordPress基础配置文件. * * 这个文件被安装程序用于自动生成wp-config.php配置文件, * 您可以不使用网站,您需要手动复制这个文件, ...
- 1.4linux文件和目录常用命令
文件和目录常用命令 目标 查看目录内容 ls 切换目录 cd 创建和删除操作 touch rm mkdir 拷贝和移动文件 cp mv 查看文件内容 cat more grep 其他 echo 重定向 ...
- strcpy和memcpy的区别-(转自stone Jin)
strcpy和memcpy都是标准C库函数,它们有下面的特点.strcpy提供了字符串的复制.即strcpy只用于字符串复制,并且它不仅复制字符串内容之外,还会复制字符串的结束符. 已知strcpy函 ...
- Springboot2.x入门——helloWorld
Springboot2.x入门--helloWorld 一.简介 1.1 Springboot简介 Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的 ...
- Python数模笔记-StatsModels 统计回归(1)简介
1.关于 StatsModels statsmodels(http://www.statsmodels.org)是一个Python库,用于拟合多种统计模型,执行统计测试以及数据探索和可视化. 2.文档 ...
- mysql数据库-日志管理
MySQL 支持丰富的日志类型 事务日志:transaction log 事务日志的写入类型为"追加",因此其操作为"顺序IO":通常也被称为:预写式日志 wr ...