iOS Swift 摄像头实时识别手机号(实时OCR)

668 阅读2分钟
原文链接: www.jianshu.com

希望实现的效果如图:

效果

前期踩的坑

前段时间项目上有个需求,需要通过摄像头识别快递单中的快递单号及手机号。快递单号没什么问题,只是二维码的识别。但是手机号的识别需要使用OCR识别,有点难度。
一开始找到了Tesseract-OCR-iOS库,但是DEMO都跑不起来,放弃了。又找到一个SwiftOCR库,据作者介绍,这个库适用于快速识别单行文本,速度比TesseractOCRiOS快得多。但是我试用下来,确实集成什么的都很方便,但是识别手机号的准确性问题很大。一开始我测试用的快递单倒是问题不大,但是后来换了个快递单,字体不一样了,识别准确率就极低了。真的是很诡异,也没有找到什么很好的办法解决这个问题,最后无奈又回头使用TesseractOCRiOS了。(PS:这两个库都有3000多star,我觉得可能是我不会用,如果有人使用SwiftOCR没问题的话,希望评论一下,提供个 demo给我学习,万分感谢)

最后用TesseractOCRiOS解决问题

集成

1.使用cocoapods集成
target 'MobileOCRDemo' do
  # Comment the next line if you're not using Swift and don't want to use dynamic frameworks
  use_frameworks!

  # Pods for MobileOCRDemo
  pod 'TesseractOCRiOS', '~> 5.0.1'

end

这个库比较大,估计pod install速度会比较慢,加速参考:gem install、brew install、pod install速度慢的终极解决办法

2.导入训练好的识别数据文件。

image.png

注意事项:
1.文件夹名称和文件名称不能改。并且必须用我demo里的文件,这个文件有版本要求,找最新的是用不了的。
2.导入文件方式要直接拖入tessdata文件夹,选Create folder references
image.png

3.其它的看demo里面的代码吧

具体TesseractOCRiOS的使用下次另开文章写,只是需要识别手机号的话,这篇文章和demo已经足够了。