Ocrs
ocrs 是一个用于从图像中提取文本的 Rust 库和命令行工具,也称为 OCR(光学字符识别)。
该项目的目标是创建一个现代化的 OCR 引擎,它:
- 能够在各种图像(扫描文档、包含文本的照片、屏幕截图等)上表现良好,与早期引擎如 Tesseract 相比,需要零或更少的预处理工作。这是通过在处理流程中更广泛地使用机器学习来实现的。
- 易于在各种平台上编译和运行,包括 WebAssembly
- 使用开放和宽松许可的数据集进行训练
- 拥有易于理解和修改的代码库
在底层,该库使用 PyTorch 训练的神经网络模型,然后将其导出为 ONNX 格式,并使用 RTen 引擎执行。有关更多详细信息,请参阅模型部分。
状态
ocrs 目前处于早期预览阶段。与商业 OCR 引擎相比,可能会出现更多错误。
语言支持
ocrs 目前仅识别拉丁字母(如英语)。更多语言的支持计划中。
CLI 安装
要安装命令行工具,您首先需要安装 Rust 和 Cargo。然后运行:
$ cargo install ocrs-cli
CLI 使用
要从图像中提取文本,运行:
$ ocrs image.png
首次运行该工具时,它会自动下载所需的模型并将其存储在 ~/.cache/ocrs
中。
其他示例
从图像中提取文本并写入 content.txt
:
$ ocrs image.png -o content.txt
以 JSON 格式从图像中提取文本和布局信息:
$ ocrs image.png --json -o content.json
在图像上标注检测到的单词和行的位置:
$ ocrs image.png --png -o annotated.png
库的使用
有关如何将 ocrs 作为 Rust 库使用的详细信息,请参阅 ocrs crate README。
模型和数据集
ocrs 使用 PyTorch 编写的神经网络模型。有关模型和数据集的更多详细信息,以及用于训练自定义模型的工具,请参阅 ocrs-models 存储库。这些模型也以 ONNX 格式提供,可用于其他机器学习运行时。
开发
要在本地构建和运行 ocrs 库和命令行工具,您需要安装最新的稳定版 Rust。然后运行:
git clone https://github.com/robertknight/ocrs.git
cd ocrs
cargo run -p ocrs-cli -r -- image.png
测试
Ocrs 为 ML 模型处理前后的代码提供单元测试,以及对整个流程(包括模型)进行测试的端到端测试。
在修改代码后,运行单元测试和 lint 检查:
make check
您也可以直接运行标准命令,如 cargo test
。
运行端到端测试:
make test-e2e
有关 ML 模型评估的详细信息,请参阅 ocrs-models 存储库。