扫描件和照片的区别
文字识别OCR技术目前已经是一种常见的Data Entry实现方式,自动识别PDF扫描件和图片上的文字,然后用于数字化和自动化系统,实现Saving和工作效率和质量上的提高,这是一种技术趋势。但是,目前OCR技术几乎实现不了100%文字识别正确率。
那么,原因何在呢?我认为最主要的原因有两点:
第一、PDF文件和图片的清晰度质量问题
清晰度和对比度直接影响了文字识别OCR的正确率,很多时候清晰度不够高,人眼都无法识别,更不要说AI了。造成清晰度不够高的原因有多种,原件的清晰度不够高,拍摄/扫描的设备精度不够高,后期处理过程中对清晰度造成影响等,这些都会造成要处理的PDF扫描件或者图片文件的清晰度质量问题。
这属于硬伤,需要从PDF扫描件或者图片文件的生成和处理过程下手来提高清晰度和对比度。
有一个典型的例子就是,在处理发票OCR文字识别过程中采用Centralized Operation Process(集中业务处理)的方式,购买高精度的扫描仪来扫描原件,从而提高要处理的PDF扫描件或者图片文件的清晰度和对比度。
第二、PDF文件和图片上所用的字体问题
就算是采取了高精度的拍照或者扫描设备,拿到了清晰度和对比度都很高的PDF扫描件或者图片文件,有些时候也无法保证100%的文字识别率,为什么呢?要看用了什么样的字体。一般而言,机打字体的识别率要高得多——目前已经达到商业应用的程度,例如发票识别、身份证等各种证件识别等,因为在这个PDF扫描件或者发票、证件图片文件上使用的是标准字体,经过训练后的AI可以较为准确地识别出这些需要的文字信息——接近100%。
而对于广告字体,艺术字体,手写字体等,问题就比较大了。当然了,在有足够的训练数据的情况下可以训练AI来识别从而提高识别正确率。我最近用Google Tesseact OCR训练了一个毛泽东字体,效果差强人意,可以识别大部分文字,但识别的正确率不够高,原因应该是训练数据集和训练时间不够。
文字识别OCR技术应该可以投入使用了,目前各个大公司都有OCR云服务提供出来,包括百度、腾讯、阿里、谷歌Google、亚马逊AWS和微软Azure等,但是在商业应用中,考虑到数据的安全性和隐私性,客户对于调用第三方的OCR服务来识别敏感数据并不放心,由此,就有了调用安装在本地的第三方OCR识别类库来做OCR识别的业务上的需要了。
我此前研究过利用Google Tesseract OCR本地类库来实现OCR文字识别的案例(Google Tesseract OCR图片文字识别应用案例(附Python源代码)),测试结果还是不错的。
今天抽了半天时间在此前那个案例基础上做了一些算法上的优化,然后又用Python写了一个桌面应用工具来调用OCR文字识别功能,实现了用桌面应用工具识别PDF扫描件和图片文件等的功能。当然,需要安装Google Tesseract OCR软件和类库。
程序运行:
选择文件并打开一个从百度上下载下来的图片文件(支持各种格式的图片文件):
然后点击窗口右下角的按钮开始OCR识别:
简单验证一下,OCR文字识别的正确率还是非常高的。
继续选择文件并打开一个从百度上下载的PDF扫描件:
然后点击窗口右下角的按钮开始OCR识别:
PDF扫描件的文字内容分页显示出来了。
因为这两个案例用到的PDF扫描件和图片文件上都是标准字体,图片质量和清晰度也较高,因此文字识别的正确率还是非常不错的。
除此之外,OCR识别出来的文字也写入了文本文件,用于后续的处理。
这个案例的Python程序的源代码已经上传到github,需要的可以直接点击下载(下载前请点个赞,加个星star):
https://github.com/hanshiqiang365/ocr_demo
我今天做这个案例,应用了Python桌面应用开发,图片灰度处理,Google Tesseract OCR技术实现,TXT文本文件写入等知识和技能。
我今天开发出的这个桌面应用工具Google Tesseract OCR Tool 具有一定的商业价值。但是,目前市场上类似的产品也很多,玩法(算法)各有不同,但是根本的东西都是差不了太多的。
OCR文字识别前要做图片处理——目的在于提高OCR识别的正确率,然后调用本地OCR工具或云服务实现文字识别。而对于PDF扫描件要先拆分PDF文件为一页页的图片,其他和图片OCR文字识别都一样。
算法需要不断优化,和写文章一样,随着学习和实践,对于算法的认识越来越深,就能不断优化算法,从而理解清楚AI的根本所在——最终目的在于为客户创造商业价值。
故有此文,与君分享。
韩思先生,韩世强,在外企工作,英文名或者说德文名是HANS,因此笔名韩思先生。职业IT经理人,半个文化人。好读书,好写作,好爬山,现定居大连。从事IT行业近二十年,积累了丰富的IT软件项目实施和管理经验,做过程序猿,产品狗和运营猫,知识面较广,并且喜欢总结和分享。