社区微信群开通啦,扫一扫抢先加入社区官方微信群
社区微信群
EasyEdge端计算模型生成平台
可基于多种深度学习框架、网络结构的模型,快捷生成端计算模型及封装SDK,适配多种AI芯片与操作系统。
文字识别,多场景、多语种、高精度的文字检测与识别服务,多项ICDAR指标居世界第一;广泛适用于远程身份认证、财税报销、文档电子化等场景,为企业降本增效;提供稳定易用的在线API、离线SDK、软件部署包多种服务形式,适配各种应用场景。
本次采用百度训练好的模型接入,避免了识别进行网络请求操作。
3.然后配置工程项目,在 BuildPhases 中 添加苹果的机器学习库CoreML,以及上面LIB中的.a 与 opencv2.framework如下图:
4.如果是swift 和 objc 混编项目 在xxxxxx-Bridging-Header.h 添加如下代码
#import "EasyDLModel.h"
#import "EasyDL.h"
#import "BoxLayer.h"
#import "EasyDLImageHelper.h"
5.最后写实现代码,我采用了单例,避免每次生成模型耗时严重,代码如下:
@objc class KDSLocalOCRTool: NSObject {
@objc static let shared = KDSLocalOCRTool()
/// 本地识别模型。训练好的模型
@objc var model: EasyDLModel?
/// 识别模式
@objc var mode: EEasyDLEngineMode = EEasyDLEngineMode_Offline
override init() {
super.init()
self.initLocalOCRModel()
}
/// 初始化本地OCR模型
func initLocalOCRModel() {
EasyDL.setLogLevel(EEasyDLLogLevelInfo)
var err: Error?
do {
model = try EasyDLModel(modelFromResourceDirectory: "easyedge")
} catch {
err = error
}
if model == nil {
print("Model init failed")
let alter = UIAlertController(title: "模型初始化失败", message: err?.localizedDescription ?? "", style: .alert) { () -> [KDSAction] in
return [KDSAction(title: "重试", style: .default) { [weak self] in
self?.initLocalOCRModel()
}]
}
UIApplication.shared.keyWindow?.rootViewController?.present(alter, animated: true, completion: nil)
}
}
/// 根据图片,输出识别内容
@objc func detectImage(_ img: UIImage, score: CGFloat, successHandler: @escaping ([Any]) -> Void ) {
var err: Error?
if mode == EEasyDLEngineMode_Offline { /// 离线识别
var res: [Any] = []
do {
res = try model?.detect(img, withFilterScore: score) ?? []
} catch {
err = error
print(err?.localizedDescription ?? "")
}
if !res.isEmpty {
successHandler(res)
}
} else {
model?.detectImageOnline(img, withFilterScore: score, andSuccessHandler: { (res) in
successHandler(res ?? [])
}, andFailHandler: { (error) in
})
}
}
}
本次采用本地ocr,本质是基于机器学习,采用百度训练好的模型,然后调用封装好的功能库,自己再封装一层
通过 KDSLocalOCRTool 的detectImage 方法接收输入图片就可以获得识别结果,总体效率不错,相比网络请求速度更快。
优点: 节约流量,不需要依赖网络进行数据识别获取。
缺点: 本地载入,包会变大一些。
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!