即用型 OCR,支持 80+ 种语言以及所有主流书写文字,包括:拉丁文、中文、阿拉伯文、天城文、西里尔文等。
已通过 Gradio 集成到 Huggingface Spaces 🤗。试试 Web Demo:
2024 年 9 月 24 日 - 版本 1.7.2



使用 pip 安装
最新稳定版:
pip install easyocr
最新开发版:
pip install git+https://github.com/JaidedAI/EasyOCR.git
注意 1:对于 Windows,请先按照此处的官方说明安装 torch 和 torchvision:https://pytorch.org。在 pytorch 网站上,务必选择与你拥有的 CUDA 版本对应的正确版本。如果你只打算以 CPU 模式运行,请选择 CUDA = None。
注意 2:我们还在此处提供了一个 Dockerfile:here。
import easyocr
reader = easyocr.Reader(['ch_sim','en']) # 此操作只需运行一次即可将模型加载到内存中
result = reader.readtext('chinese.jpg')
输出将以列表格式呈现,每个元素分别表示一个边界框、检测到的文本和置信度。
[([[189, 75], [469, 75], [469, 165], [189, 165]], '愚园路', 0.3754989504814148),
([[86, 80], [134, 80], [134, 128], [86, 128]], '西', 0.40452659130096436),
([[517, 81], [565, 81], [565, 123], [517, 123]], '东', 0.9989598989486694),
([[78, 126], [136, 126], [136, 156], [78, 156]], '315', 0.8125889301300049),
([[514, 126], [574, 126], [574, 156], [514, 156]], '309', 0.4971577227115631),
([[226, 170], [414, 170], [414, 220], [226, 220]], 'Yuyuan Rd.', 0.8261902332305908),
([[79, 173], [125, 173], [125, 213], [79, 213]], 'W', 0.9848111271858215),
([[529, 173], [569, 173], [569, 213], [529, 213]], 'E', 0.8405593633651733)]
注意 1:['ch_sim','en'] 是你想要识别的语言列表。你可以同时传入多种语言,但并非所有语言都可以一起使用。英语与所有语言兼容,而共享常见字符的语言通常也彼此兼容。
注意 2:除了文件路径 chinese.jpg 之外,你还可以传入 OpenCV 图像对象(numpy 数组)或字节形式的图像文件。原始图像的 URL 也可以。
注意 3:reader = easyocr.Reader(['ch_sim','en']) 这一行用于将模型加载到内存中。这会花费一些时间,但只需运行一次。
你还可以设置 detail=0 以获得更简洁的输出。
reader.readtext('chinese.jpg', detail = 0)
结果:
['愚园路', '西', '东', '315', '309', 'Yuyuan Rd.', 'W', 'E']
所选语言的模型权重会自动下载,你也可以从 model hub 手动下载,并将它们放入 '~/.EasyOCR/model' 文件夹中。
如果你没有 GPU,或者 GPU 内存较低,可以通过添加 gpu=False 以纯 CPU 模式运行模型。
reader = easyocr.Reader(['ch_sim','en'], gpu=False)
$ easyocr -l ch_sim en -f chinese.jpg --detail=1 --gpu=True
识别模型,点击此处阅读。
检测模型(CRAFT),点击此处阅读。
reader = easyocr.Reader(['en'], detection='DB', recognition = 'Transformer')
其想法是能够将任何最先进的模型插入 EasyOCR。有很多天才正在尝试构建更好的检测/识别模型,但我们并不想在这里成为天才。我们只是想让他们的工作成果能够迅速为公众所用……而且是免费的。(好吧,我们相信大多数天才都希望自己的作品能尽可能快、尽可能大地产生积极影响)流程应该类似下图。灰色槽位是可替换的浅蓝色模块的占位符。

本项目基于多篇论文和开源仓库的研究与代码。
所有深度学习执行均基于 Pytorch。❤️
检测执行使用此官方仓库中的 CRAFT 算法及其论文(感谢来自 @clovaai 的 @YoungminBaek)。我们还使用了他们预训练的模型。训练脚本由 @gmuffiness 提供。
识别模型是 CRNN(论文)。它由 3 个主要组件组成:特征提取(我们目前使用 Resnet)和 VGG、序列标注(LSTM)和解码(CTC)。识别执行的训练流程是 deep-text-recognition-benchmark 框架的修改版本。(感谢来自 @clovaai 的 @ku21fan)这个仓库是一颗值得获得更多认可的宝石。
Beam search 代码基于此仓库和他的博客。(感谢 @githubharald)
数据合成基于 TextRecognitionDataGenerator。(感谢 @Belval)
关于 CTC 的一篇很好的解读来自 distill.pub,点击此处。
让我们通过让 AI 触手可及来共同推动人类进步!
3 种贡献方式:
程序员: 对于小的 bug/改进,请发送 PR。对于较大的改动,请先通过开启 issue 与我们讨论。这里有一个标记为 'PR WELCOME' 的可能 bug/改进 issue 列表。
用户: 告诉我们 EasyOCR 如何帮助到你/你的组织,以鼓励进一步发展。同时请在 Issue 板块 中发布失败案例,以帮助改进未来的模型。
技术负责人/专家: 如果你觉得这个库有用,请帮忙宣传!(参见 Yann Lecun 关于 EasyOCR 的帖子)
要请求新语言,我们需要你发送一个包含以下 2 个文件的 PR:
如果你的语言有独特的元素(例如 1. 阿拉伯语:字符在相互连接时会改变形态 + 从右到左书写 2. 泰语:某些字符需要位于线上方,某些位于下方),请尽你所能向我们说明,和/或提供有用的链接。要构建一个真正可用的系统,关注这些细节非常重要。
最后,请理解我们的优先级必须放在流行语言或彼此共享大部分字符的语言组合上(如果你的语言属于这种情况,也请告诉我们)。开发一个新模型至少需要一周时间,因此你可能需要等待一段时间才能发布新模型。
参见开发中的语言列表
由于资源有限,超过 6 个月的 issue 将被自动关闭。如果问题很关键,请重新开启 issue。
关于企业支持,Jaided AI 提供针对自定义 OCR/AI 系统的全方位服务,涵盖实施、训练/微调和部署。点击此处联系我们。