图像识别领域有几个最热门的方向,其中就包含了OCR(Optical Character Recognition,光学字符识别),百度、阿里、腾讯都有自己的OCR收费服务。随着目前数据量越来越大,以及硬件性能的提升,OCR的应用也越来越成熟,像身份证识别、火车票识别、发票识别、出租票识别等等。相信大家也体验过一些,今天给大家介绍一个好用的开源OCR应用EasyOCR,而且还包含多种语言,识别效果也还不错,目前在git上已有8K颗星
git地址:https://github.com/JaidedAI/EasyOCR
EasyOCR目前能够支持58种语言,其中有中文(简体和繁体)、日语、泰语、韩语等,支持的语言列表如下
EasyOCR支持的语言类型
EasyOCR的模型主要分为两个,基于CRAFT的文字检测模型和基于ResNet+LSTM+CTC的识别模型
官方也提供了一些效果实例,如下,对于这种比较标准的印刷文字以及路牌识别效果还是不错的
第三方基于easyOCR提供了几个demo地址,大家可以试试自己的数据看看效果:
我利用第三个接口(第一个接口无法访问,docker还没测试),我从网页上随便截取了一段文字来测试一下,效果如下
文字基本上能识别出来,不过标点符号的识别不是那么的准确,我在自己的电脑上按照git上配置了一下环境,识别效果要比上面好不少,效果如下
顺便测试了一下火车票的识别效果
火车票的识别效果还是要差一些,估计是训练的时候缺少这样的数据
EasyOCR依赖pytorch的环境,需要先安装pytorch,这个安装教程大家参考torch的官方安装教程,在安装好torch之后大家就可以通过pip直接来安装EasyOCR
pip install easyocr
pip install git+git://github.com/jaidedai/easyocr.git
在安装完之后,需要先下载好预训练模型,模型下载地址请参考git,下载好模型之后,将模型拷贝到~/.EasyOCR/model目录下,如果找不到路径请自行创建目录或者执行下面的语句(执行之后会自动创建目录),测试代码如下
import easyocr
reader = easyocr.Reader(['ch_sim','en'])
print(result)
经过测试,目前开源的模型在非印刷文字,例如火车票、发票、身份证等识别效果不是很理想,估计主要还是缺少这方面的训练数据导致的,基于CRAFT的文字检测模型对于曲线文字(例如印章等)的检测效果很差。