編集者注

ferstar/dsh-tool-ocr

Local OCR plugin: give text-only generative LLMs the ability to read images

これは DeepSeek Harness(DSH)プラグインです。当サイトは GitHub README、インストール情報、メンテナンス状況、公開セキュリティシグナルをまとめています。

dsh-tool-ocr

English | 中文

一个独立的 DeepSeek Harness 插件:为不支持视觉输入的模型(如 DeepSeek 对话模型)提供本地图片文字识别,基于独立的 newbee-ocrnbocr)引擎,运行 PP-OCRv6 模型。

完全独立于仓库(out-of-tree):只依赖已发布的 dsh 基础包(@deepseek-ai/cordis@deepseek-ai/dsh-tools@deepseek-ai/dsh-subprocess 等),与 deepseek-harness 仓库零耦合。

功能

说明
ocr 工具模型可见工具:recognize / status / install(check 的别名)/ check 四种动作
图片输入本地 path(按会话工作目录解析)或 attachment_id(会话中已附加的图片,物化为临时文件)
输出阅读顺序 <text>、引擎事实、分块包围盒(include_boxes)、复核标记(低置信度/金额/数字/日期/数量,needsReview)、启发式 Markdown 表格(table
健壮性能容忍 MNN 诊断信息污染引擎 stdout;遵循调用方取消和超时

两种使用方式

取决于你运行的是哪个 dsh 构建,图片输入的工作方式不同:

方式 A —— 官方 dsh:传图片路径(ocr { path }

官方 deepseek-harness 会拒绝未声明图片输入能力的模型(如 DeepSeek 对话模型)上传图片 —— session.prompt 返回 MODEL_DOES_NOT_SUPPORT_IMAGES。这是产品决策而非缺陷,本插件无法绕过。因此在官方 dsh 上,通过路径使用工具:

ocr { path: "C:/Users/me/Desktop/screenshot.png" }

模型通过 OCR 引擎从磁盘读取文件。图片从不进入会话,因此无需改动 dsh 核心。

方式 B —— dsh fork:拖拽图片(ocr { attachment_id }

ferstar/deepseek-harness(默认分支 feat/image-placeholder-for-text-only-adapters)增加了一条可选的图片占位管线:

  • api-gateway 新增 allowImagePlaceholder(默认 false)。开启后,即使纯文本模型也允许图片进入会话。
  • 请求到达 LLM 之前,每个 image block 都会被替换为 [image attachment <id>] 文本。模型知道图片存在,调用 ocr { attachment_id },插件把附件物化为临时文件交给引擎。

体验与多模态模型一致:把图片拖进对话,模型就能读出其中的文字 —— 区别只是图片在发给 LLM 之前先交给了 OCR,而不是作为像素发送。

在 profile 的 cordis.patch.yml 中开启:

- id: api-gateway
  config:
    allowImagePlaceholder: true

- insert:
    - id: ocr
      name: 'dsh-tool-ocr'
      inject: [tools, subprocess, systemPrompt]
      config:
        command: 'C:/path/to/nbocr.exe'
        detModel: 'v6-tiny'
        language: 'chinese'

安装

1. 安装 OCR 引擎

newbee-ocr-cli 的 Releases 获取 nbocr 二进制(提供 Windows / macOS / Linux 预构建版本):

# 一键安装脚本(自动检测平台,安装到 ~/.cargo/bin 并加入 PATH)
curl -LsSf https://github.com/zibo-chen/newbee-ocr-cli/releases/latest/download/newbee_ocr_cli-installer.sh | sh
# 或在 Windows PowerShell 中:
#   irm https://github.com/zibo-chen/newbee-ocr-cli/releases/latest/download/newbee_ocr_cli-installer.ps1 | iex

# 备选:从 Release 页面下载对应平台的压缩包,解压出 nbocr[.exe] 放到任意目录,
# 然后在配置里用 `command` 指向它

或从源码构建:

git clone https://github.com/zibo-chen/newbee-ocr-cli
cd newbee-ocr-cli && cargo build --release   # -> target/release/nbocr[.exe]

2. 将插件安装到你的 dsh profile

从 npm 安装(已发布为 dsh-tool-ocr):

dsh plugin --profile web add dsh-tool-ocr
# 或在 profile 目录内:
cd ~/.dsh/profiles/web && pnpm add dsh-tool-ocr

或从源码安装:

git clone https://github.com/ferstar/dsh-tool-ocr
cd dsh-tool-ocr && pnpm install && pnpm build

挂载到 dsh

在 profile 的 cordis.patch.yml 中添加插件行:

- insert:
    - id: ocr
      name: 'dsh-tool-ocr'
      inject: [tools, subprocess, systemPrompt]
      config:
        # nbocr 可执行文件:绝对路径,或 PATH 上可解析的名称
        command: 'C:/path/to/nbocr.exe'
        # 识别模型/语言别名
        language: 'chinese'
        # 检测模型档位:v6-tiny(内嵌默认)、v6-small、v6-medium
        detModel: 'v6-tiny'

注意:dsh-tool-ocr 是普通插件而非 bundle —— dsh plugin add 会将其安装为依赖,但不会自动挂载。上面的 patch 行才是激活它的方式。

配置

字段默认含义
command—(必填)nbocr 可执行文件:绝对路径或 PATH 上的名称。
args[]nbocr 子命令之前的额外参数(不走 shell)。
env{}额外的环境变量项。
languagechinese识别模型/语言别名。
detModelv6-tiny检测模型档位。
modelsDir''非内嵌模型目录;为空使用内嵌模型。
maxImageBytes26214400接受的最大图片字节数。
maxOutputBytes2000000收集的引擎 stdout 上限(字节)。
maxTextChars12000text 中返回的最大识别文本字符数。
timeoutMs600000工具调用超时预算(毫秒)。

工具用法

ocr { path | attachment_id, action?, include_boxes?, table?, max_text_chars? }

模型应使用 ocr 并传入图片文件的 path,或当会话中已包含图片(显示为 [image attachment <id>])时传入 attachment_idstatus 探测就绪状态而不做引擎工作;check 端到端运行一次真实的 1x1 探针识别。

开发

pnpm typecheck   # tsc --noEmit
pnpm test        # vitest(单元测试 + fixture 模拟引擎)
pnpm lint        # oxlint

真实引擎冒烟测试(未设置两个环境变量时跳过):

NBOCR_BIN=/path/to/nbocr OCR_E2E_IMAGE=/path/to/image.png pnpm test

License

MIT

REPOSITORY SIGNALS

セキュリティとインストールエビデンス

このスコアは公開リポジトリメタデータと当サイトに登録されたインストールエビデンスのみに基づくもので、コードセキュリティ監査とは異なります。

出所の追跡可能性

公開プラグインカタログから取得し、公開 GitHub リポジトリにリンクしています。

ライセンス

リポジトリは MIT ライセンスを宣言しています。

メンテナンス活動

過去180日以内にコードの更新があります。

インストールエビデンス

再現可能な正確なインストールメタデータはまだ登録されていません。リポジトリの説明に従って手動で確認してください。

インストールライフサイクルスクリプト

確認したパッケージメタデータにインストールライフサイクルスクリプトは宣言されていません。