Skip to content

About

Bob 的 OpenAI OCR 文本识别插件 / An OpenAI-powered OCR plugin for Bob

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

Bob OpenAI 文本识别插件

English

这是一个用于 Bob 的 OCR 插件。它通过 OpenAI Responses API 将截图或图片交给用户指定的视觉模型识别,并把结果按行返回给 Bob。

为什么需要这个插件

Bob 目前提供离线文本识别、百度 OCR 试用版,以及火山、腾讯、百度、有道、Google 等带密钥的官方 OCR 服务。

这些服务可以覆盖常规 OCR,但仍有一些共同或分类上的限制:

  • 官方服务面向固定 OCR 引擎,暂时不能自由调用和切换各类通用多模态大模型。
  • 不同云服务需要分别申请账号、密钥、额度并理解各自的计费与地区规则,配置无法复用。
  • 支持的语言、混合语言效果、复杂版面能力和识别策略由具体服务决定,用户通常不能用提示词补充领域词汇、输出格式或阅读顺序等上下文。
  • 离线识别具有本地处理的隐私优势,但模型和能力固定;云服务功能更丰富,但图片需要发送给相应服务商。

本插件提供统一的 OpenAI 配置入口:可自行选择支持图片输入的模型、图片细节级别和 OCR 提示词,也可以连接兼容 OpenAI 路径格式的转发地址。

功能

  • 使用当前 OpenAI Responses API 的 input_image 图片输入。
  • 支持 PNG、JPEG、WEBP 和非动画 GIF;插件会根据图片文件头生成正确的 Base64 data URL。
  • 模型 ID、API 基础地址、图片细节级别、提示词和超时时间均可配置。
  • API 密钥使用 Bob 的安全输入框保存。
  • 提示词支持 {{language}} 占位符,可读取 Bob 当前选择或检测到的语言代码。
  • 支持 Bob 的取消信号、服务验证和标准错误对象。
  • 中文版与英文版分别构建;任意一个插件包的设置界面都只包含一种语言。

环境要求

  • macOS 与 Bob,Bob 最低版本 1.8.0
  • 一个可用的 OpenAI API 密钥
  • 支持图片输入和 Responses API 的 OpenAI 模型
  • 开发或构建时需要 Node.js 24;仓库已提供 mise.toml

OpenAI 的最新模型支持情况请以模型列表为准。图片输入、格式限制和 detail 的含义请参考图片与视觉文档。官方文档建议 OCR 等精细视觉任务在模型支持时使用 original;本插件默认使用兼容性更好的 auto,可在设置中切换。

构建

项目没有第三方 npm 依赖。先进入仓库目录,再执行:

# 中文版(默认)
mise exec -- npm run build:zh

# 英文版
mise exec -- npm run build:en

# 同时构建两个版本
mise exec -- npm run build:all

产物会写入 release/:

release/
├── bob-openai-ocr-v0.1.1-zh-Hans.bobplugin
└── bob-openai-ocr-v0.1.1-en.bobplugin

构建脚本只会把选定语言的 info.json 和运行时提示文本放入对应插件包,不会在设置界面同时显示中英文。.bobplugin 根目录包含 info.json、入口 main.js、strings.js、modules/ 和 LICENSE;功能代码通过 Bob 原生 require/module.exports 机制组织,符合 Bob 的模块与打包要求。

模块职责如下:

  • main.js:仅保留 Bob OCR 插件入口函数。
  • modules/ocr.js:编排 OCR 与配置验证请求。
  • modules/config.js:读取、校验配置并构造 API URL 和请求头。
  • modules/response.js:解析 Responses API 输出并转换为 Bob OCR 结果。
  • modules/image.js:识别图片 MIME 类型并生成 data URL。
  • modules/language.js:Bob 语言列表和结果语言选择。
  • modules/errors.js:Bob 标准服务错误转换。
  • modules/constants.js:共享默认值和语言常量。

仓库根目录的 info.json 是可直接检查的中文版默认清单,同时也是构建脚本读取公共元数据的来源;英文构建会替换其中所有面向用户的文字。中文版使用 appcast.json,英文版使用 appcast_en.json,构建脚本会自动把英文插件内的 appcast URL 切换为 appcast_en.json。仓库配置正式下载地址后,再按照 Bob 发布规范分别加入版本、SHA-256、下载 URL 和时间戳。

安装与配置

  1. 双击所需语言的 .bobplugin 文件完成安装。
  2. 在 Bob 的「设置 → OCR → 服务」中添加 OpenAI 文本识别 或 OpenAI OCR。
  3. 填写 OpenAI API 密钥。
  4. 确认 API 基础地址并选择模型;如选择“自定义模型”,请在下一项填写模型 ID,然后按需调整图片细节、提示词与超时时间。
  5. 点击 Bob 设置页中的验证按钮检查密钥和网络连接。
配置项 默认值 说明
OpenAI API 密钥 无 必填,使用安全输入框
API 基础地址 https://api.openai.com/v1 可填写以 /v1 结尾的地址或完整 /responses 地址
模型 gpt-5.6-luna 下拉选择 gpt-5.6-luna、gpt-5.6-terra、gpt-5.6-sol 或“自定义模型”;预置项依据当前 OpenAI 模型列表
自定义模型 无 仅在模型选择“自定义模型”时生效;必须支持图片输入和 Responses API
图片细节级别 auto 可选 auto、original、high、low;并非所有旧模型都支持 original
识别提示词 内置 OCR 提示词 {{language}} 会替换为 Bob 语言代码
超时时间 60 秒 可选 30、60、120、180 或 300 秒

插件调用 /v1/responses 时会设置 store: false。图片仍会发送到配置的 API 服务;请在处理敏感内容前阅读 OpenAI 的数据政策,并确认所用转发服务是否有不同的数据处理规则。

开发验证

mise exec -- npm run check
mise exec -- npm test
mise exec -- npm run test:coverage
mise exec -- npm run build:all

准备发布

mise exec -- npm run release:prepare

该命令先构建中英文插件,再运行 scripts/appcast.mjs:中文版写入 appcast.json,英文版写入 appcast_en.json。脚本会从 package.json 读取版本,校验其与 info.json 一致,计算插件包 SHA-256,并生成 v<version> GitHub Release 标签下的下载 URL。同一版本重复执行时会替换原记录并保留首次生成的时间戳。

可以用以下命令确认插件包根目录内容和语言隔离:

unzip -l release/bob-openai-ocr-v0.1.1-zh-Hans.bobplugin
unzip -p release/bob-openai-ocr-v0.1.1-en.bobplugin info.json

已知限制

  • OpenAI Responses API 返回的是识别文本,本插件不生成每行的可靠坐标,因此没有声明 Bob supportBoundingBox 能力,也不会出现在依赖坐标的原图翻译 OCR 服务列表中。
  • 识别质量、速度、可用语言和费用由所选模型、图片细节级别与 OpenAI 账户额度决定。
  • original 仅适用于支持该细节级别的模型;遇到参数错误时可切换为 auto 或 high。
  • API 返回文本若不符合提示词,插件会尽量移除完整的 Markdown 代码块并按非空行交给 Bob,但不会对识别内容做二次改写。

参考资料

许可证

MIT

About

Bob 的 OpenAI OCR 文本识别插件 / An OpenAI-powered OCR plugin for Bob

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages