摘要:{ "texts": "The Llama 3.2-Vision Collection of multimodal large langyage model5 (LLMS) is a\ncollection of instruction-tuned image
一个基于苹果 Vision 框架构建的强大命令行 OCR 工具,支持单图像和批量处理,并能输出详细的位置信息。
Ollama-OCR 只需几行代码,轻松实现高质量文字识别!
macos 10.15 或更高版本支持 arm64(Apple Silicon)或 x86_64(Intel)架构建议使用 macOS 13 或更高版本以获得最佳的 OCR 识别效果。
下载预构建的版本
目前 macos-vision-ocr 的版本是 0.0.1,可以在 macos-vision-ocr/releases 页面下载:
从源代码构建
确保已安装 Xcode 和命令行工具克隆仓库:git clone https://github.com/your-username/macos-vision-ocr.gitcd macos-vision-ocr手动构建 macos-vision-ocr:对于 Apple Silicon (arm64):
swift build -c release --arch arm64对于 Intel (x86_64):
swift build -c release --arch x86_64单图像处理
处理单个图像并输出到控制台:
./macos-vision-ocr --img ./images/handwriting.webp指定自定义输出目录:
./macos-vision-ocr --img ./images/handwriting.webp --output ./images批量处理
处理目录中的多个图像:
./macos-vision-ocr --img-dir ./images --output-dir ./output将识别后的所有文本合并到单个文件:
./macos-vision-ocr --img-dir ./images --output-dir ./output --merge调试模式
启用调试模式以可视化文本检测:
./macos-vision-ocr --img ./images/handwriting.webp --debug命令行选项
选项: --img单个图像文件的路径 --output
单图像模式的输出目录 --img-dir
批处理模式的图像目录 --output-dir
批处理模式的输出目录 --merge 在批处理模式下将所有文本输出合并到单个文件 --debug 调试模式:在图像上绘制边界框 --lang 显示支持的识别语言 --help 显示帮助信息输出格式
工具输出的 JSON 结构如下:
{ "texts": "The Llama 3.2-Vision Collection of multimodal large langyage model5 (LLMS) is a\ncollection of instruction-tuned image reasoning generative models in l1B and 90B\nsizes (text + images in / text ovt). The Llama 3.2-Vision instruction-tuned models\nare optimized for visval recognittion, iage reasoning, captioning, and answering\ngeneral qvestions about an iage. The models outperform many of the available\nopen Source and Closed multimodal models on common industry benchmarKs.", "info": { "filepath": "./images/handwriting.webp", "width": 1600, "filename": "handwriting.webp", "height": 720 }, "observations": [ { "text": "The Llama 3.2-Vision Collection of multimodal large langyage model5 (LLMS) is a", "confidence": 0.5, "quad": { "topLeft": { "y": 0.28333333395755611, "x": 0.09011629800287288 }, "topRight": { "x": 0.87936045388666206, "y": 0.28333333395755611 }, "bottomLeft": { "x": 0.09011629800287288, "y": 0.35483871098527953 }, "bottomRight": { "x": 0.87936045388666206, "y": 0.35483871098527953 } } } ]}调试输出
使用 --debug 时,工具将:
创建一个带有 "_boxes.png" 后缀的新图像在检测到的文本周围绘制红色边界框在输入图像的同一目录中保存调试图像支持的语言
通过 macos-vision-ocr --lang 可以输出当前系统所支持的语言,在 kakuqo 电脑上(macOS 14.4.1)输出的结果如下:
英语 (en-US)法语 (fr-FR)意大利语 (it-IT)德语 (de-DE)西班牙语 (es-ES)葡萄牙语(巴西) (pt-BR)简体中文 (zh-Hans)繁体中文 (zh-Hant)简体粤语 (yue-Hans)繁体粤语 (yue-Hant)韩语 (ko-KR)日语 (ja-JP)俄语 (ru-RU)乌克兰语 (uk-UA)泰语 (th-TH)越南语 (vi-VT)以下是在 Node.js 应用程序中使用 macos-vision-ocr 的示例:
const { exec } = require("child_process");const util = require("util");const execPromise = util.promisify(exec);async function performOCR(imagePath, outputDir = null) { try { // 构建命令 let command = `./macos-vision-ocr --img "${imagePath}"`; if (outputDir) { command += ` --output "${outputDir}"`; } // 执行 OCR 命令 const { stdout, stderr } = await execPromise(command); if (stderr) { console.error("错误:", stderr); return null; } // 解析 JSON 输出 console.log("stdout:", stdout); const result = JSON.parse(stdout); return result; } catch (error) { console.error("OCR 处理失败:", error); return null; }}// 使用示例async function example { const result = await performOCR("./images/handwriting.webp"); if (result) { console.log("提取的文本:", result.texts); console.log("文本位置:", result.observations); }}example;常见问题图像加载失败确保图像路径正确验证图像格式是否受支持(JPG、JPEG、PNG、WEBP)检查文件权限未检测到文本确保图像包含清晰、可读的文本检查文本大小是否不太小(最小文本高度为图像高度的1%)验证文本语言是否受支持本文,完。觉得本篇文章不错的,记得随手点个赞、收藏和转发三连,感谢感谢~如果想第一时间收到推送,请记得关注我们⭐~
来源:AIGC研究社一点号