AI个人学习
和实操指南
豆包Marscode1

uniOCR:跨平台开源的文字识别工具

综合介绍

uniOCR 是一个开源的文字识别工具,由 mediar-ai 团队开发。它基于 Rust 语言编写,支持 macOS、Windows 和 Linux 系统。用户可以通过它从图片中提取文字,操作简单且免费。uniOCR 的核心特点是跨平台支持和统一的接口设计。它集成了多种 OCR 引擎,包括 macOS 的 Vision Kit、Windows OCR 和 Tesseract,还支持云端 OCR。无论是个人用户还是开发者,都可以用它快速处理图片文字识别任务。项目代码开放,允许用户自由修改和扩展。

uniOCR:跨平台开源的文字识别工具-1


 

功能列表

  • 支持 macOS、Windows 和 Linux 系统,跨平台运行。
  • 提供多种 OCR 引擎选择:macOS Vision、Windows OCR、Tesseract 和云端 OCR。
  • 支持从单张图片或多张图片中提取文字。
  • 提供统一的 API 接口,方便切换不同 OCR 引擎。
  • 支持异步操作和批量处理,提升识别效率。
  • 允许自定义设置,比如语言、置信度阈值和超时时间。
  • 开源项目,用户可以查看和修改代码。

 

使用帮助

安装流程

uniOCR 需要安装 Rust 环境和相关依赖才能运行。以下是详细步骤:

  1. 安装 Rust
    • 打开终端,输入以下命令安装 Rust:
      curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
      
    • 安装完成后,运行 rustc --version 检查版本,确保安装成功。
  2. 下载 uniOCR 源码
    • 使用 Git 克隆项目到本地:
      git clone https://github.com/mediar-ai/uniOCR.git
      
    • 进入项目目录:
      cd uniOCR
      
  3. 安装 Tesseract(可选)
    • 如果想使用 Tesseract 引擎,需要额外安装:
      • macOS:运行 brew install tesseract
      • Ubuntu:运行 apt-get install tesseract-ocr
      • Windows:运行 winget install tesseract 或手动下载安装包。
    • macOS Vision 和 Windows OCR 无需额外安装。
  4. 编译项目
    • 在项目目录运行:
      cargo build --release
      
    • 编译完成后,可执行文件位于 <项目目录>/target/release/
  5. 运行程序
    • 输入以下命令启动:
      cargo run --release
      

如何使用

uniOCR 通过代码调用实现文字识别。以下是基本操作:

  1. 准备图片
    • 将需要识别的图片(比如 test.png)放入项目目录。
  2. 运行基本示例
    • 编辑 <项目目录>/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
      
    • 程序会输出图片中的文字。
  3. 选择 OCR 引擎
    • 修改 OcrProvider 参数以切换引擎:
      • macOS Vision:OcrProvider::MacOS
      • Windows OCR:OcrProvider::Windows
      • Tesseract:OcrProvider::Tesseract
    • 示例代码:
      let engine = OcrEngine::new(OcrProvider::Tesseract)?;
      
  4. 批量处理
    • 编辑 <项目目录>/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)需额外配置凭证,目前官方未提供完整示例。

 

应用场景

  1. 文档扫描
    用户可以将纸质文件拍照,用 uniOCR 提取文字,保存为电子版。
  2. 多语言翻译
    识别图片中的外文后,配合翻译工具生成多语言文本。
  3. 自动化工作流
    开发者可以将 uniOCR 集成到脚本中,批量处理图片并提取文字。

 

QA

  1. 哪些系统支持 uniOCR?
    支持 macOS、Windows 10+ 和 Linux,无需额外硬件。
  2. 如何提高识别准确率?
    使用高质量图片,调整置信度阈值,或选择适合的 OCR 引擎。
  3. Tesseract 无法识别中文怎么办?
    需安装中文语言包,并设置 languages(vec!["chi_sim"])
未经允许不得转载:首席AI分享圈 » uniOCR:跨平台开源的文字识别工具
zh_CN简体中文