OCR文字识别方法对比

ocr文字识别数据集

目前正在做ocr文字识别相关的项目,做了一些调研,今天做个周结,首先是几个开源框架对比吧!

EasyOCR、Chineseocr、Chineseocr_lite

我主要看的是GitHub中的一些项目,这三个OCR识别工具是Github里包含中文OCR功能的。第一、EasyOCR是全语种的(包括70+门外语识别),不单单针对中文,所以它的官方文档自然也都是英文了。对于英文不好的小伙伴来说很不友好。因此这里主要还是基于Chineseocr_和Chineseocr_lite。

1 EasyOCR

这个我没用就简单了解一下:
OCR文字识别方法对比_第1张图片
OCR文字识别方法对比_第2张图片

2chineseocr

github上训练好的模型做测试,项目里有提供训练数据的百度网盘下载,有资源的同学可以自己跑跑看。
通过搜集来的几个不同OCR测试数据集(github上有很多现成的,包括生成数据集、现实数据集等)随机选1000张图片来测试。
OCR文字识别方法对比_第3张图片
OCR文字识别方法对比_第4张图片
对比结果:
OCR文字识别方法对比_第5张图片
OCR文字识别方法对比_第6张图片
EasyOCR的测试速度较慢,lite的独特之处则在于它很轻快,不管是模型大小还是推理时需要的内存。因此可以把lite定义为一个轻量级中文OCR,支持竖排文字识别、NCNN推理,识别模型型仅17M(Psenet (8.5M) + crnn (6.3M) + anglenet (1.5M))可以看到,200张图片测试稳定在1-1.5G左右的内存。

3 Chineseocr_lite

Chineseocr_lite不支持pip,因此对于不熟悉github的同学,时间成本相对会高点,因为还要git clone和熟悉仓库的用法。其他的成本则主要集中在开发上。
对于有训练和开发需求的用户来说,采用开源版本的OCR框架,成本主要是环境搭建上,因为需要自己安装pytorch,web,GPU版本还需要安装正确版本的CUDA+cuDNN,这部分比较容易出BUG。众所周知debug很耗时间。
OCR文字识别方法对比_第7张图片
OCR文字识别方法对比_第8张图片
开源免费、不需要注册和认证流程、可扩展性强、识别率相对高;缺点则是对开发能力有一定要求,需要熟悉搭建环境和开发。这一点见仁见智吧。

PaddleOCR

这个还在学习,先看官方文档,首先要表扬一点,其他几个OCR工具都是默认用户知道OCR是什么以及具体的定义和应用,但是作为技术文档,应该有规范化、学术化的编写要求,连《同济线代》上来都会讲一下什么是行列式,前面几个ocr的文档等于直接教你怎么高斯消元,虽然学过线代的都能看懂,但观感上有点跳。建议其他厂商都学一下廖雪峰的文档结构,尽量把是什么先讲了,再说怎么做。相较之下,PaddleOCR的文档倒让我想起我以前看过的机器学习类教材,从OCR的定义、场景、数据集加载、模型loading、预测、部署到实例demo,完完全全按照正常用户的pipeline流程来写,非常简明扼要,没有一句多余的话。比商用OCR的事无巨细模板式教程和开源OCR的不明就里跳跃式文档教程好很多。此外我的主观感受是文本的排版和图片的选择都比较符合我的审美,不会有阅读障碍。
OCR文字识别方法对比_第9张图片
OCR文字识别方法对比_第10张图片
OCR文字识别方法对比_第11张图片
OCR文字识别方法对比_第12张图片
OCR文字识别方法对比_第13张图片
OCR文字识别方法对比_第14张图片
confidence卡0.99的情况下,可以看到PaddleOCR三个指标都赢的很明显。不过图片的类型、分布会影响指标,加上测试集文字单一、数据量小,因此只能说明在这个小数据集里PaddleOCR的效果最好,不具有广泛的参考意义。此外,就应用场景的泛化性能来看,语种识别上PaddleOCR目前包括中英文、英文、法语、德语、韩语、日语,要多于Chineseocr_lite,但明显少于EasyOCR,不过就常见的外语和特殊字符识别来说已经完全够用了。对于普通场景来说,比如身份证识别、票据识别,其实大多数算法的准确率都不错,但特殊场景更考验模型的泛化性能。相较而言PaddleOCR至少在检测能力上比其他几个开源工具要好,但识别能力仍有待提升。当然,这是数据和算法层面的瓶颈,学术界暂时也没有特别好的解决方法。既然之前用过chineseocr_lite,顺便也说说PaddleOCR的模型大小和推理性能。这块PaddleOCR的兄弟产品模型压缩套件PaddleSlim提供了强大的技术支持,为PaddleOCR超轻量化模型的提供依赖支撑。
整体的压缩流程就是集成模型剪枝、量化(包括量化训练和离线量化)、蒸馏和神经网络搜索等业界常用且领先的模型压缩功能。从超轻量模型8.1M直接压缩到3.5M,模型大小降低了56.79%,其中检测模型速度提升21%,而且整体模型精度还有一定提升。

未完,待续。。。。。。

你可能感兴趣的:(神经网络,机器学习,pytorch)