VinnyOCR 1.1.0

VinnyOCR 1.1.0

Igor Efremov 维护。



VinnyOCR 1.1.0

  • 作者:
  • Igor Efremov

Logo

VinnyOCR

VinnyOCR 是一个快速且小巧的 Swift 编写的 OCR 库。借助 Accelerate 和 Vision 框架,它使用神经网络来识别文本。VinnyOCR 是为了识别短的一行长,由数字和字母组成的代码(例如,DI49CM)而创建和优化的。目前只支持 iOS 和 macOS。

灵感来源

此项目受到了 SwiftOCR 的启发。这两个项目之间的区别在于 VinnyOCR 使用了 Apple 内部框架(Accelerate 和 Vision)进行图像操作和文本定位。

特性

  • 易于使用的训练工具

  • 高准确性

  • 快速

  • 小巧

要求

  • iOS 11.0+/macOS 10.13+

  • Swift 5.0+

安装

CocoaPods

要使用CocoaPods集成VinnyOCR到您的Xcode项目中,请在您的Podfile中添加它

pod 'VinnyOCR'

工作原理

  1. 输入图像将被阈值化(二值化)

  2. 图像中的字符被定位并单独转换为浮点数组

  3. 每个浮点数组都通过神经网络传递

如何使用

使用VinnyOCR非常简单。

import VinnyOCR

let modelUrl = Bundle.main.url(forResource: "VinnyOCR", withExtension: "ocr")!
let vinny = VinnyOCR(url: modelUrl)!

vinny.recognize(someImage) { (text) in
  print(text)
}

当构建配置设置为Release时,VinnyOCR运行得更快。

训练

要训练一个用于使用的模型,克隆此存储库并打开位于Trainer目录中的VinnyOCR Trainer Xcode项目。

启动训练应用程序后,进行以下操作

  1. 通过为每个字体点击Should Train?列中的复选框来选择要使用哪些字体来训练模型。

  2. 通过点击Choose Backgrounds并选择一些图像文件来选择要使用哪些背景来训练模型。此存储库的Trainer/Sample Backgrounds/目录中提供了示例训练背景。

  3. 通过点击Choose Output Directory来选择输出模型文件的位置。一旦训练完成,模型文件将被保存到该目录中。

  4. 按下《开始训练》按钮。默认错误阈值设置为网络不太可能达到的值。相反,在开始训练后,等待5-10分钟,然后按下《停止训练》- 生成的模型只要模型错误小于100就会工作。模型错误以<current model error>/<target model error>格式显示在开始/停止训练按钮旁边。

备注

  • 在您开始训练后,如果1分钟后模型错误没有降到100以下,请按下《停止训练》和《开始训练》重新启动训练过程。这将生成具有新权重的网络。

  • 可以通过编辑TrainingParameters.swift中的值来修改训练参数。

计划改进

  • 在README中添加训练截图

  • 在训练期间扭曲生成的训练图像

  • 允许在训练期间动态使用字符集

致谢

  • SwiftOCR 启发本项目。

  • Swift-AI 提供项目中使用的神经网络代码。

许可

该VinnyOCR在MIT许可下发布。详细内容请参阅LICENSE