SwiftyTesseractRTE
SwiftyTesseractRTE 目前只能用于竖屏模式。
关于 SwiftyTesseractRTE
SwiftyTesseractRTE (SwiftyTesseract 实时引擎) 是基于 SwiftyTesseract 开发的实时光学字符识别库。
Swift 版本 | SwiftyTesseractRTE 版本 |
---|---|
4.0 | 1.x.x |
4.1 | 1.x.x |
4.2 | 2.x.x |
在项目中使用 SwiftyTesseractRTE
导入必要的模块
import SwiftyTesseract
import SwiftyTesseractRTE
创建一个RealTimeEngine实例并分配它的regionOfInterest属性。
var realTimeEngine: RealTimeEngine!
@IBOutlet weak var previewView: UIView!
@IBOutlet weak var regionOfInterest: UIView! // A subview of previewView
override func viewDidLoad() {
let swiftyTesseract = SwiftyTesseract(language: .english)
realTimeEngine = RealTimeEngine(swiftyTesseract: swiftyTesseract, desiredReliability: .verifiable) { recognizedString in
// Do something with the recognized string
}
}
override func viewDidLayoutSubviews() {
// Must occur during viewDidLayoutSubviews() - Autolayout constraints are not set in viewDidLoad()
realTimeEngine.bindPreviewLayer(to: previewView)
realTimeEngine.regionOfInterest = regionOfInterest.frame
// Only neccessary if providing a visual cue where the regionOfInterest is to your end user
previewView.addSublayer(regionOfInterest.layer)
}
光学字符识别和相机预览
SwiftyTesseractRTE允许在不不断尝试识别文本的情况下显示相机预览。这允许您在开始扫描之前让最终用户对齐要扫描的文本。默认情况下,recognitionIsActive
属性设置为true
,因此为了防止立即开始扫描,在实例化RealTimeEngine
并在调用startPreview()
之前将recognitionIsActive
设置为false。调用stopPreview()
也会防止尝试识别,因为没有可扫描的输入相机帧。
开始和停止识别
// Starts optical character recognition
realTimeEngine.recognitionIsActive = true
// Stops optical character recognition
realTimeEngine.recognitionIsActive = false
开始和停止相机预览
// Starts camera preview
realTimeEngine.startPreview()
// Stops camera preview
realTimeEngine.stopPreview()
相机权限
对于相机权限,您需要在您的 Info.plist
文件中添加 Privacy - Camera Usage Description
权限。如果您正在使用默认的 SwiftyTesseractRTE AVManager
实现,则在生成相机预览时将请求权限。如果提供了自定义的 AVManager
实现,则开发者需要自行实现权限请求。对于大多数用例,默认的 AVManager
实现是首选的,只有当需要同时从相机访问 CMSampleBuffer
以运行 OCR 时,才应提供自定义实现。
onRecognitionComplete
闭包属性
RealTimeEngine 的 从 SwiftyTesseractRTE 2.0 开始,SwiftyTesseractRTEDelegate 协议已被名为 onRecognitionComplete
的闭包属性取代,该属性的类型是 ((String) -> ())?
。这可以通过几种方式分配
实例化时的尾随闭包
RealTimeEngine(swiftyTesseract: swiftyTesseract, desiredReliability: .verifiable) { recognizedString in
// Do something with the recognized string
}
传递函数参数
RealTimeEngine(swiftyTesseract: swiftyTesseract, desiredReliability: .verifiable, onRecognitionComplete: aFunction)
属性注入
let realTimeEngine = RealTimeEngine(swiftyTesseract: swiftyTesseract, desiredReliability: .verifiable)
// Anonymous closure
realTimeEngine.onRecognitionComplete = { recognizedString in
// Do something with the recognized string
}
// Named closure
realTimeEngine.onRecognitionComplete = aFunction
关于仅按肖像的照片的注意事项
SwiftyTesseractRTE目前只能用于纵向模式,但这并不意味着您的整个应用程序也必须仅限于纵向模式。请参考示例项目的AppDelegate(特别是添加shouldRotate
布尔型成员变量和实现application(_:supportedInterfaceOrientationsFor:)
)以及ViewController文件(特别是viewWillAppear()
和viewWillDisappear()
方法)以了解如何使单个视图控制器仅限于纵向模式。
安装
CocoaPods
使用pod --version
测试:1.3.1
# Podfile
use_frameworks!
target 'YOUR_TARGET_NAME' do
pod 'SwiftyTesseractRTE', '~> 2.0'
end
替换YOUR_TARGET_NAME
,然后在每个Podfile
目录下输入
$ pod install
将SwiftyTesseract设置为SwiftyTesseractRTE的使用
请参阅SwiftyTesseract的附加配置部分,以了解如何正确设置SwiftyTesseract以便在您的项目中使用。
文档
SwiftyTesseractRTE的官方文档可以在这里找到
欢迎贡献
贡献总是欢迎的!请参阅SwiftyTesseractRTE的贡献以获取有关创建问题和张开pull请求的完整指南。