添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

使用了互联网大厂的OCR,发现没有一个能打的

高能警告!下面有群体攻击!攻击范围包括百度、华为、阿里、腾讯


OCR需求

将高考招生指南实体书电子化,可以按照学校、专业等进行查询和排序

图片 :单页为1.9M~2.5M图片,A4高清扫描

处理过程

图片拆分为两个半张图片->调用SDK识别图片,获取响应文件->抽取文字内容和精度,按照逻辑重新组合->存入数据库->OpenCV识别数字->格式化输出

技术栈

C# + FreeSQL + SQlite; Python + OpenCV

技术选型

百度 ,OCR场景细分为通用文字识别、通用文字识别(高精度版)、含位置信息、高精度含位置信息 百度文字识别,覆盖全面,响应迅速,准确率超99%-百度AI开放平台 百度 ,OCR场景细分为通用文字识别、通用文字识别(高精度版)、含位置信息、高精度含位置信息

起初选择含位置信息,倒是挺快,识别精度太差,放弃

选择最贵的高精度含位置信息,还是出现丢字现象,接下来就试用了华为。

华为 ,识别精度和百度类似,大段的文字块识别效果令人满意,但是百度丢的单字华为也没找回来。

后来在论坛专家指导下用了表格识别,效果好那么一点点,但还是丢字,华为专家说也就这样了。

那只能接受现实了,基于华为的识别结果做了解析,丢掉后两列数字识别部分,自己用OpenCV作了数字的识别!

虽然我最后选择了使用华为,但是整个使用过程华为给我的体验非常不好,应该是对个人开发者非常不友好,也许我不是华为的目标客户吧。

阿里OCR ,试用上传图片失败,要求不能超过1.5M,太搞笑了,想用你是看得上你,还对用户有要求,放弃
腾讯云OCR ,试用后,和百度、华为是同样的问题,放弃进一步使用
腾讯优图 OCR,不知道和腾讯OCR是什么关系,试用上传图片失败,要求不能超过1M,搞笑X2,放弃
讯飞OCR ,连个试用都没有,只提供API,谁知道你能不能行?实验的时间成本你来出?最烦这种厂商,一点不为用户着想,放弃

如果明年处理同样数据的话,华为、百度、腾讯应该都可以,还是华为吧,每月的免费额度够用了,少许费用可以接受,研发工作都做完适配了。

百度相比有点贵(虽然每天仅能免费使用50次)。

处理过程及问题

1、图片拆分为两个半张图片->图片中文字识别顺序是按行进行,会有跨行问题,给后继逻辑处理带来麻烦,所以检测图片中间竖线位置,将图片分为两个半片

2、调用SDK识别图片,获取响应文件->华为给的SDK每次都重新获取token,文档中说token有24小时有效期,懒得去改sdk,就这么用着吧

3、抽取文字内容和精度,按照逻辑重新组合->因为第二、三列数字识别不全(学费和招生人数),只对识别出的5位以上数字进行处理,通过数据的特征进行对象实例化

4、存入数据库->通过FreeSQL将对象列表中数据存入Sqlite,FreesQL真香!

5、OpenCV识别数字->利用旧日经验捡尸,要回忆和熟悉Python和OpenCV,太痛苦了,将两列数字识别后,补充入库。后来我就想要不要用PaddleOCR替换文字识别过程,毕竟文字块切分都做了。

6、格式化输出->通过SQL语句查询数据,导出为Excel

最后两列大部分是空的,允悲!

OCR问题

1、单字符丢失,例如图片下半部分的4600 1,基本上1都会丢失

2、识别错误,例如1识别为3

3、虽然看起来是相同的文字,但是识别结果不统一,如4600 1,有识别为46001,有识别为460,有识别为4600

4、识别有倾斜角度的图片,或者图片边缘稍扭曲的文字,精度会大幅降低;对细笔画的文字识别效果不好

实验(解决单字符丢失问题)

1、测试双列数字,第二列丢字

2、测试单列数字,全部识别成功

这样的话,同一张图片要拆分为六列,单独识别后,再把信息组合起来,逻辑处理上太麻烦了,成本也大幅提高。

建议

1、差异化图像处理方法和训练模型,别都是一样的,大同小异,能解决的问题大家都能解决,解决不了的都解决不了,作为竞品就没什么意义;至少给出几种不同的识别结果,让用户有个挑选不是?都是文字块先膨胀后腐蚀处理,有没有不腐蚀的?或者给出腐蚀情况下不同阈值的处理结果?

2、建立交互式OCR,用户可根据识别结果进行反馈,提高识别精度或着重识别部分位置

3、不能光有OCR,没有人工智能,想“T程”在一堆汉字中出现的,大概率是“工程”,应该基于常识知识库给出最优解

4、统一Response json格式,内容无非是识别的文字、文字位置之类的,每一家格式都不一样,最好能统一,降低研发迁移成本

感想

对国内的OCR行业失望了,当然不只是OCR,NLP同样有这样的经历,想当年一路从百度、腾讯试过去,结果也是一言难尽……

不过NLP比OCR难多了,心理倒是可以接受,OCR处理不了这么清楚的印刷体场景,令我感到吃惊。

看各位论文、竞赛猛如虎,搞各种花里胡哨的字体识别,但是解决不了基本的实际问题,挺悲哀的。

最后要说,可能是我的水平菜,生硬的使用了各家的产品,对各位产品了解不够深入,blablabla~

但是不能让菜鸡顺利的使用你们的产品,难道不是你们的过错吗?!

锅还是你们的,哼~

附记 - 收费标准(2020年8月)

百度OCR收费标准

百度OCR免费额度

华为OCR

下篇预告

从使用体验上讲,百度要好过华为很多,这个必须点赞,就是起步是万次套餐,居然还有一年期限,接受无能。实验阶段用的按量计费,总共花费了不到10元,然后无情的抛弃了百度(微笑)。

华为有千次收费包,还是很厚道的,这就是我为什么选择华为的原因(还不是因为穷);但是使用过程中,华为让我感到很大的挫败感,时常处于懵逼和抓狂状态,下面我会单开一篇吐槽华为。

编辑于 2020-10-23 08:35

文章被以下专栏收录