免费 Swift OCR API,用于读取身份证和银行卡号码
开源顶级 Swift 光学字符识别(OCR)库,通过免费 Swift API 识别并读取身份证、银行卡、门牌号和文档中的数字。
Evil 是什么?
对于在 Apple 平台上构建软件的开发者来说,使用开源的 Evil 库将光学字符识别(OCR)集成到 iOS 和 macOS 应用中变得更加简便。该基于 Swift 的解决方案利用 Apple Vision 框架的设备端算力,提供一个高层次的 API,以卓越的效率从图像中提取文本。作为面向开发者的工具,Evil 简化了添加强大 OCR 功能的复杂过程,使您能够在 Swift 项目中直接快速识别来自银行卡、身份证或门牌号等来源的文本。
Evil 库通过将 Swift 原生性能与 Core ML 模型(.mlmodel)集成的卓越灵活性相结合,擅长提取结构化数据。这种基于模型的架构允许开发者部署预训练模型即刻使用,或训练并实现针对特定识别任务的自定义模型。通过提供简洁的 API 与灵活的模型部署方式,Evil 为 iOS 与 macOS 的移动和桌面应用提供了流畅、高性能的 OCR 体验,完美适用于创建复杂的设备端文本提取功能。
开始使用 Evil
推荐的 Evil 安装方式是使用 CocoaPods。请使用以下命令进行顺利安装。
Install Evil Library via CocoaPods
pod 'evil'Install Evil Library via GitHub
git clone https://github.com/getomni-ai/zerox.git You can also install it manually; download the latest release files directly from GitHub repository.
通过 Swift API 识别图像中的数字
Evil 完全使用 Swift 编写,支持 iOS (11.0+) 与 macOS (10.13+) 双平台,使其在原生 Apple 生态系统开发中具备高度的通用性。开源的 Evil 库为 Swift 应用提供完整的结构化数据数字识别支持。Evil 的核心目标是让软件开发者能够轻松实现对图像中数字的识别,无论是银行卡、身份证,甚至是门牌号。初始化 Evil 库后,只需调用 recognize 方法即可识别图像中的文字,下面的示例演示了具体用法。
How to Recognize Numbers from an Image via Swift API?
let image: Recognizable = // Your image (e.g., a UIImage or CGImage)
let result = evil?.recognize(image)
print(result)
// This returns the OCR result—typically the detected number or text as a string
// Run OCR on Input Image
if let result = evil?.recognize(myImage) {
print("Detected number: \(result)")
}
高级内存操作
开源的 Swift 光学字符识别库 Evil 允许软件开发者直接访问并操作 Swift 应用内部的内存,从而在调试、游戏外挂或安全测试等场景中发挥作用。下面的示例展示了如何使用 Swift 命令读取和写入特定内存位置。
How to Read and Write to a Specific Memory Location via Swift API?
#include
int main() {
uintptr_t address = 0x00400000; // Example memory address
uint8_t value = evil_read_memory(address); // Read a byte
evil_write_memory(address, 0x90); // Write a NOP (0x90) instruction
return 0;
}
通过 URL 灵活加载模型
开源的 Evil 库提供多种方式加载 Core ML 模型。您可以将模型直接打包进应用,亦可为降低首次下载体积,在运行时从远程服务器下载模型。为保持应用体积小巧,可将 .mlmodel 文件托管在服务器上,由 Evil 库在运行时动态下载。
How to Access Model from a Remote URL via Swift API?
let downloadURL = URL(string: "https://your-server.com/ChineseIDCard.mlmodel")!
let chineseIDCard = Recognizer.custom(name: "ChineseIDCard", model: downloadURL, needComplie: true, processor: Recognizer.cropChineseIDCardNumberArea)
let evil = try? Evil(recognizer: chineseIDCard)