支持40种语言的图片文字识别(OCR)项目

Hi!你们好呀!我是大家努力的喵哥!javascript

OCR(光学字符识别)是咱们平常很经常使用的人工智能技术。咱们总会有从图片中提取文字的需求。你是否是有须要从图片复制文字的经历?手打是最低效的选择。咱们可使用 OCR 软件,直接将图片上的符号转化为对应的文字。java

那么,这里喵哥就要给你们推荐一个开源项目 EasyOCR。EasyOCR 并非能够直接使用的软件(虽然它有一个演示网站),而是一个超级易于使用的 OCR 开源工具库。三行代码,就能够实现一个 OCR 功能。EasyOCR 支持40多种语言,包括英文,中文,日文,韩文和泰文等。nginx

若是你只是想简简单单的使用 OCR 工具。喵哥仍是推荐你,使用国内比较成熟的商业项目。这些商业项目,还能完整的贴合你的使用场景。好比,扫描全能王就很是好用。其识别的准确度、速度都无可挑剔。以外,喵哥还要推荐另外一款 OCR 软件白描。除了识别准确度和速度外,白描更是一款 UI 异常精致的产品。git

EasyOCR 是基于人工智能实现的文字识别。图片检测部分是使用的是开源项目 CRAFT-pytorch 及其论文中的 CRAFT算法。识别模型为 CRNN。CRNN 由3个主要组成部分组成:特征提取、序列标记和解码。github





安装


安装使用pip以得到稳定的版本。算法

pip install easyocr

对于最新的开发版本。shell

pip install git+git://github.com/jaidedai/easyocr.git

注意:对于Windows,请先按照https://pytorch.org上的官方说明安装Torch和Torchvision。json

使用数组

import easyocrreader = easyocr.Reader(['ch_sim','en'])reader.readtext('chinese.jpg')

输出将采用列表格式,每一个项目分别表示边界框,文本和置信度。微信

[([[[ 18975 ],[ 46975 ],[ 469165 ],[ 189165 ]],'愚园路',0.3754989504814148), ([[ 8680 ],[ 13480 ],[ 134128 ],[ 86128 ]],'西',0.40452659130096436), ([[[ 51781 ],[ 56581 ],[ 565123 ],[ 517123 ]],'东',0.9989598989486694), ([[[ 78126 ],[ 136126 ],[ 136156 ],[ 78156 ]],' 315 ',0.8125889301300049), ([[[ 514126 ],[ 574126 ],[ 574156 ],[ 514156 ]],' 309 ',0.4971577227115631), ([[[ 226170 ],[ 414170 ],[ 414220 ],[ 226220 ]],“豫园路”,0.8261902332305908), ([[[ 79173 ],[125173],[ 125213 ],[ 79213 ]],' W ',0.9848111271858215), ([[[ 529173 ],[ 569173 ],[ 569213 ],[ 529213 ]],' E ',0.8405593633651733)]

注意1:['ch_sim','en']是您要阅读的语言列表。您能够一次传递几种语言,但并不是全部语言均可以一块儿使用。英语与每种语言兼容。共享公共字符的语言一般相互兼容。

注意2:除了filepath chinese.jpg,您还能够将OpenCV图像对象(numpy数组)或图像文件做为字节传递。原始图像的URL也能够接受。

您也能够将detail= 0 设置为更简单的输出。

reader.readtext('chinese.jpg', detail = 0)

结果:

[ '愚园路''西''东'' 315 '' 309 ''豫园路。'' W '' E ' ]

所选语言的型号权重将自动下载,或者您能够从如下连接手动下载并将其放在'〜/ .EasyOCR / model'文件夹中。

若是您没有GPU或GPU的内存不足,则能够经过添加gpu = False在CPU模式下运行它。

reader = easyocr.Reader(['th','en'], gpu = False)

详细的说明,能够参考官方文档。

在命令行上运行

$ easyocr -l ch_sim zh -f chinese.jpg --detail = 1 --gpu = True





最后


EasyOCR 目前支持如下48种语言。

南非语(af),阿塞拜疆语(az),波斯尼亚语(bs),简体中文(ch_sim),繁体中文(ch_tra),捷克语(cs),威尔士语(cy),丹麦语(da),德语(de),英语(en) ),西班牙语(es),爱沙尼亚语(et),法语(fr),爱尔兰语(ga),印地语(hi),克罗地亚语(hr),匈牙利语(hu),印度尼西亚语(id),冰岛语(is),意大利语(it ),日语(ja),韩语(ko),库尔德语(ku),拉丁语(la),立陶宛语(lt),拉脱维亚语(lv),毛利人(mi),马拉地语(mr),马来语(ms),马耳他语(mt ),尼泊尔文(ne),荷兰文(nl),挪威文(no),奥克西唐(oc),波兰文(pl),葡萄牙文(pt),罗马尼亚文(ro),塞尔维亚文(latin)(rs_latin),斯洛伐克文(sk)(须要从新访问),斯洛文尼亚语(sl),阿尔巴尼亚语(sq),瑞典语(sv),斯瓦希里语(sw),泰语(th),他加禄语(tl),土耳其语(tr),乌兹别克(uz),越南语(vi)(须要再次访问)

字符列表位于项目文件夹 easyocr / character中 。

EasyOCR项目制定了一个大概的路线图。

第一阶段(如今-2020年10月)

1. 语言包:印地语,阿拉伯语,西里尔字母等。旨在覆盖全球80%至90%以上的人口。同时改善现有语言。

2. 更好的文档和API。

3. 语言模型可实现更好的解码。

第二阶段(2020年10月以后)

1. 手写支持:网络体系结构应该可有可无。关键是使用GAN生成逼真的手写数据集。

2. 更快的处理时间:模型修剪(精简版)/量化/导出到其余平台(ONNX?)。

3. 开放数据集和模型训练管道。

4. 重组代码以支持可交换的检测和识别算法。API应该相似以下。

reader = easyocr.Reader(['en'], detection='DB', recognition = 'ReXNet_LSTM_Attention')

EasyOCR 项目的做者是组织 aided AI 。aided AI 的宗旨是给世界展现 AI 的价值。EasyOCR 共有50位贡献者,在 Github 共收获了6.5k Star。

项目地址https://github.com/JaidedAI/EasyOCR



往期精彩内容

一套绝佳的图标字体库和 CSS 框架

推荐一款网络超级加速神器

入坑股市必备的数据利器

一个更好用的性能测试框架

5秒克隆语音,我也能用周杰伦的声音唱歌了

推荐!时间管理大师的开源选择

...


关注Github喵,回复「进阶」,

领取喵哥推荐的技术进阶知识大礼包!!!

扫描二维码

获取更多内容

Github喵



本文分享自微信公众号 - Github喵(gh_acfcf1689379)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。

相关文章
相关标签/搜索