TesseractOCR-iOS 预研

作者: o翻滚的牛宝宝o | 来源:发表于2022-02-28 11:46 被阅读0次

背景


最近iOS15系统出了一个LiveText功能,功能非常好用,想在自己的APP里也实现该功能。可惜的是目前apple官方还没提供相应的接口供开发者使用。LiveText本质上是OCR技术,所以想预研下,这类功能是如何实现。网上搜集相关资料,免费的支持本地OCR功能,并且支持多个平台的也就谷歌提供的Tesseract了,而且支持pod,所以先从这个下手。

Tesseract简介


将图片翻译成文字一般被称为光学文字识别(Optical Character Recognition,OCR)。可以实现OCR 的底层库并不多,目前很多库都是使用共同的几个底层OCR 库,或者是在上面进行定制。
Tesseract 是一个OCR 库,目前由Google 赞助(Google 也是一家以OCR 和机器学习技术闻名于世的公司)。Tesseract 是目前公认最优秀、最精确的开源OCR 系统。
除了极高的精确度,Tesseract 也具有很高的灵活性。它可以通过训练识别出任何字体(只要这些字体的风格保持不变就可以),也可以识别出任何Unicode 字符。

简单来说,Tesseract采用机械学习的模式,先提取特征训练字符库,然后根据字符库来识别图片中的文字。目前支持多个平台。

开始安装


Tesseract应该是C++编写,目前iOS的主要分支应该是gali8分支。

github:https://github.com/gali8/Tesseract-OCR-iOS

cocoapods.png

截止目前为止最新版本是5.0.1并且支持swift,很不错。下面就是简单pod一下就好了。

我这里使用的是清华源,可以提升速度,也推荐给大家

source 'https://mirrors.tuna.tsinghua.edu.cn/git/CocoaPods/Specs.git'

podFile.png

开始测试


首先看来看看Tesseract对项目结构的要求。使用Tesseract,我们需要将训练好的库放到项目中去,必须是一个文件夹,并且以tessdata命名,注意这里要选folder references,tessdata里面就是训练好的模型。


选择文件.png

然后再来看看代码,发现意外的简单。

首先生成一个G8Tesseract对象,使用多种语言文字用+号连接,然后再配置引擎以及识别参数,最后就能将图片的文字识别到recognizedText。

下面找一张图片试试看:

识别测试.png

这中文识别还行,但这英文嘛。。。。会不会是颜色干扰了识别?据我所知,图像识别一般都要黑白化,这样可以减少干扰因素。所以下面我们用GPUImage对图像进行处理试下(GPUImage刚才pod里面有)。改进代码:

改进代码.png 改进结果.png

问题更严重了。会不会是我用的字符库没经过训练,或者训练较差呢?然后我就去Tesseract官网看看有没有新的字符库。地址:
https://github.com/tesseract-ocr/tessdata 下载新的字符库发现跑不起来,原来TesseractOCRiOS 5.0.1 只适配到3.0.3的Tesseract,官方早就更新到4.0.0以上了。如果想要使用新的训练库,就得升级Tesseract。TesseractOCRiOS多年没维护,issues上也有类似的问题没有解决。所以只能找找看有没有支持4.0.0以上的野分支了。经过一番搜索,还真找到了一个分支,作者xwal。https://github.com/xwal/Tesseract-OCR-iOS

下面修改podFile重新拉代码:


重新拉分支.png

经过测试,效果提升并不明显。而且英文与英文如果黏连很近,还是很容易出错。

总结


目前来看Tesseract方案和系统iOS自带的文字识别还是有一定差距的,而且要携带训练好的字符特征包,会增大APP的体积。所以目前想在照片使用OCR,用webView去显示图片,然后用系统自带功能可能更加合适一点。

相关文章

  • TesseractOCR-iOS 预研

    背景 最近iOS15系统出了一个LiveText功能,功能非常好用,想在自己的APP里也实现该功能。可惜的是目前a...

  • 直流分盘控制器

    预研中……

  • Protobuf On HTTP 技术预研 (附代码)

    Protobuf 技术预研 Protobuf 技术预研一、背景二、Protobuf说明2.1 什么是Protobu...

  • freeline预研

    前言 本文介绍了freeline的相关的使用和总结,关于具体的使用,在 github上的freeline相关文档 ...

  • NativeScript 预研

    NativeScript是最近推出的一个跨平台解决方案,可以让你可以用JavaScript来直接写Android、...

  • 技术预研

    只有预研那些看起来没啥卵子用的东西,才能在这些东西正儿八经有用的时候,快速跟进。

  • SiriKit预研

    一、SiriKit介绍 Siri是一款苹果 iOS 系统提供的智能语音助手软件,它的全名是 Speech Inte...

  • Ar预研

    1.业务背景: Ar技术越来越火。想利用Ar的特性做一些事情。希望把口袋撸猫中的宠物Ar化。(个人不太成熟的想法)...

  • 技术预研

    技术预研是要识别并抓住至少未来五年内的技术机遇。华为于1998年年底成立了预研部,负责开展前瞻性技术的研发。 华为...

  • 标准制订流程

    预研——立项——起草——征求意见——审查——批准——出版——复审——废止 (一)预研阶段:在研究论证的基础上提出制...

网友评论

    本文标题:TesseractOCR-iOS 预研

    本文链接:https://www.haomeiwen.com/subject/fullrrtx.html