iOS:实时摄像头上的实时OCR(类似于iTunes Redeem礼品卡)

bol*_*iva 24 ocr ios

有没有办法完成类似于iTunes和App Store应用程序使用设备相机兑换礼品卡时所做的事情,在实时相机提要上实时识别短字符串?

iTunes App兑换礼品卡用户界面

我知道在iOS 7中,现在有一个AVMetadataMachineReadableCodeObject类AFAIK,它只代表条形码.我更感兴趣的是检测和读取短字符串的内容.是否可以使用公开的API方法或您可能知道的其他第三方SDK?

还有一个过程中的视频:

https://www.youtube.com/watch?v=c7swRRLlYEo

最好,

小智 15

我正在开发一个类似Apple应用程序商店的项目,如你所提到的那样用相机兑换.

处理实时视频的一个很好的起点是我在GitHub上找到的一个项目.这是使用AVFoundation框架并实现AVCaptureVideoDataOutputSampleBufferDelegate方法.

获得图像流(视频)后,您可以使用OpenCV处理视频.在通过Tesseract运行之前,您需要确定要OCR的图像区域.您必须使用过滤,但您使用OpenCV采取的主要步骤是:

  • 使用cv :: cvtColor(inputMat,outputMat,CV_RGBA2GRAY)将图像转换为B&W;
  • 阈值图像以消除不必要的元素.您指定要消除的阈值,然后将其他所有内容设置为黑色(或白色).
  • 确定形成框边界的线(或您正在处理的任何线).如果已经消除了除所需区域之外的所有内容,则可以创建"边界框",或者使用HoughLines算法(或概率版本,HoughLinesP).使用此选项,您可以确定线交点以查找角,并使用角来扭曲所需区域,以便在OCR之前将其拉直到适当的矩形(如果在您的应用中需要此步骤).
  • 使用Tesseract OCR库处理图像部分以获得结果文本.可以在OpenCV中为字母创建训练文件,这样您就可以在没有Tesseract的情况下阅读文本.这可能会更快,但也可能是更多的工作.在App Store中,他们正在做类似的事情,以显示覆盖在原始图像顶部的文本.这增加了很酷的因素,所以它取决于你需要什么.

其他一些提示:

  • 我用"Instant OpenCV"这本书快速入门.这非常有帮助.
  • 从OpenCV.org/downloads.html下载OpenCV for iOS
  • 我发现自适应阈值处理非常有用,您可以通过搜索"OpenCV adaptiveThreshold"来阅读所有相关内容.此外,如果您的图像中明暗元素之间的图像很少,则可以使用Otsu的二值化.这基于灰度图像的直方图自动确定阈值.


Fra*_* Li 8

这个Q&A线程似乎一直是iOS上OCR主题的热门搜索热门之一,但是已经过时了,所以我想我会发布一些额外的资源,这些资源可能对我发现写这篇文章的时间:

视觉框架
https://developer.apple.com/documentation/vision
作为iOS的11,你现在可以使用,例如,矩形或文本检测附带的基于CoreML-Vision的框架.我发现我不再需要将OpenCV与操作系统中包含的这些功能结合使用.但请注意,文本检测与文本识别或OCR不同,因此您仍需要另一个库(如Tesseract(或可能是您自己的CoreML模型))将检测到的图像部分转换为实际文本.

SwiftOCR
https://github.com/garnele007/SwiftOCR
如果您只是对识别字母数字代码感兴趣,那么这个OCR库声称速度快,内存消耗和Tesseract的准确度都有所提高(我自己没试过).

ML套件
https://firebase.google.com/products/ml-kit/
谷歌已经发布了ML套件作为其开发工具套件火力地堡的一部分,处于测试阶段,在写这篇文章的时间.与Apple的CoreML类似,它是一个机器学习框架,可以使用您自己训练的模型,但也有预先训练的模型,用于常见的图像处理任务,如Vision Framework. Vision Framework 不同,它还包括用于拉丁字符的设备上文本识别的模型.目前,此库的使用对于设备上的功能是免费的,收取使用来自Google的云/ SAAS API产品的费用.我选择在我的项目中使用它,因为识别的速度和准确性似乎相当不错,我也将创建一个具有相同功能的Android应用程序,因此拥有一个单一的跨平台解决方案对我来说是理想的选择.

ABBYY实时识别SDK
https://rtrsdk.com/
此iOS和Android商业SDK可免费下载,用于评估和有限的商业用途(截至撰写本文时,最多可达5000个单位).进一步的商业用途需要扩展许可.由于定价不透明,我没有对此次发行进行评估.


Wai*_*ain 4

“实时”只是一组图像。您甚至不需要考虑处理所有这些,只需足以广泛地表示设备的运动(或相机位置的变化)即可。iOS SDK 中没有内置任何内容来执行您想要的操作,但您可以使用第 3 方 OCR 库(如 Tesseract)来处理从相机抓取的图像。