综合介绍
uniOCR 是一个开源的文字识别工具,由 mediar-ai 团队开发。它基于 Rust 语言编写,支持 macOS、Windows 和 Linux 系统。用户可以通过它从图片中提取文字,操作简单且免费。uniOCR 的核心特点是跨平台支持和统一的接口设计。它集成了多种 OCR 引擎,包括 macOS 的 Vision Kit、Windows OCR 和 Tesseract,还支持云端 OCR。无论是个人用户还是开发者,都可以用它快速处理图片文字识别任务。项目代码开放,允许用户自由修改和扩展。
功能列表
- 支持 macOS、Windows 和 Linux 系统,跨平台运行。
- 提供多种 OCR 引擎选择:macOS Vision、Windows OCR、Tesseract 和云端 OCR。
- 支持从单张图片或多张图片中提取文字。
- 提供统一的 API 接口,方便切换不同 OCR 引擎。
- 支持异步操作和批量处理,提升识别效率。
- 允许自定义设置,比如语言、置信度阈值和超时时间。
- 开源项目,用户可以查看和修改代码。
使用帮助
安装流程
uniOCR 需要安装 Rust 环境和相关依赖才能运行。以下是详细步骤:
- 安装 Rust
- 打开终端,输入以下命令安装 Rust:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
- 安装完成后,运行
rustc --version
检查版本,确保安装成功。
- 打开终端,输入以下命令安装 Rust:
- 下载 uniOCR 源码
- 使用 Git 克隆项目到本地:
git clone https://github.com/mediar-ai/uniOCR.git
- 进入项目目录:
cd uniOCR
- 使用 Git 克隆项目到本地:
- 安装 Tesseract(可选)
- 如果想使用 Tesseract 引擎,需要额外安装:
- macOS:运行
brew install tesseract
- Ubuntu:运行
apt-get install tesseract-ocr
- Windows:运行
winget install tesseract
或手动下载安装包。
- macOS:运行
- macOS Vision 和 Windows OCR 无需额外安装。
- 如果想使用 Tesseract 引擎,需要额外安装:
- 编译项目
- 在项目目录运行:
cargo build --release
- 编译完成后,可执行文件位于
<项目目录>/target/release/
。
- 在项目目录运行:
- 运行程序
- 输入以下命令启动:
cargo run --release
- 输入以下命令启动:
如何使用
uniOCR 通过代码调用实现文字识别。以下是基本操作:
- 准备图片
- 将需要识别的图片(比如
test.png
)放入项目目录。
- 将需要识别的图片(比如
- 运行基本示例
- 编辑
<项目目录>/examples/basic.rs
,代码如下:use uniocr::{OcrEngine, OcrProvider}; use anyhow::Result; #[tokio::main] async fn main() -> Result<()> { let engine = OcrEngine::new(OcrProvider::Auto)?; let text = engine.recognize_file("test.png").await?; println!("提取的文字: {}", text); Ok(()) }
- 运行示例:
cargo run --example basic
- 程序会输出图片中的文字。
- 编辑
- 选择 OCR 引擎
- 修改
OcrProvider
参数以切换引擎:- macOS Vision:
OcrProvider::MacOS
- Windows OCR:
OcrProvider::Windows
- Tesseract:
OcrProvider::Tesseract
- macOS Vision:
- 示例代码:
let engine = OcrEngine::new(OcrProvider::Tesseract)?;
- 修改
- 批量处理
- 编辑
<项目目录>/examples/batch_processing.rs
:use uniocr::{OcrEngine, OcrProvider}; use anyhow::Result; #[tokio::main] async fn main() -> Result<()> { let engine = OcrEngine::new(OcrProvider::Auto)?; let images = vec!["img1.png", "img2.png", "img3.png"]; let results = engine.recognize_batch(images).await?; for (i, text) in results.iter().enumerate() { println!("图片 {} 提取的文字: {}", i + 1, text); } Ok(()) }
- 运行:
cargo run --example batch_processing
- 编辑
特色功能操作
自定义设置
- uniOCR 支持调整识别参数。示例代码:
use uniocr::{OcrEngine, OcrProvider, OcrOptions};
let options = OcrOptions::default()
.languages(vec!["eng", "chi_sim"]) // 设置英文和简体中文
.confidence_threshold(0.8) // 置信度阈值
.timeout(std::time::Duration::from_secs(30)); // 超时 30 秒
let engine = OcrEngine::new(OcrProvider::Auto)?.with_options(options);
- 运行后,识别会按设置执行。
多语言支持
- 如果识别中文,需安装 Tesseract 的中文语言包:
- macOS/Ubuntu:运行
brew install tesseract-lang
或apt-get install tesseract-ocr-chi-sim
- Windows:下载
chi_sim.traineddata
并放入 Tesseract 安装目录的tessdata
文件夹。 - 设置语言参数为
vec!["chi_sim"]
。
性能优化
- uniOCR 使用异步操作和并行处理。批量识别时,程序会同时处理多张图片,节省时间。
- 在高性能设备上(如 M4 MacBook Pro),macOS Vision 每秒可处理 3.2 张图片,准确率达 90%。
注意事项
- 图片需清晰,模糊或光线不足可能影响识别效果。
- Windows 系统需为 Windows 10 或以上版本。
- 云端 OCR(如 Google Cloud Vision)需额外配置凭证,目前官方未提供完整示例。
应用场景
- 文档扫描
用户可以将纸质文件拍照,用 uniOCR 提取文字,保存为电子版。 - 多语言翻译
识别图片中的外文后,配合翻译工具生成多语言文本。 - 自动化工作流
开发者可以将 uniOCR 集成到脚本中,批量处理图片并提取文字。
QA
- 哪些系统支持 uniOCR?
支持 macOS、Windows 10+ 和 Linux,无需额外硬件。 - 如何提高识别准确率?
使用高质量图片,调整置信度阈值,或选择适合的 OCR 引擎。 - Tesseract 无法识别中文怎么办?
需安装中文语言包,并设置languages(vec!["chi_sim"])
。