Installation
npx -y @deepseek-ai/dsh plugin --profile web add github:ferstar/dsh-tool-ocrThis installation command is an unverified starting point generated from the GitHub repository address.
README
Maintainer-authored documentation snapshot.
dsh-tool-ocr
English | 中文
Local image text recognition for DeepSeek Harness models without vision input, backed by the standalone newbee-ocr (nbocr) engine over PP-OCRv6 models. Fully out-of-tree: depends only on published dsh base packages.
Features
| Item | Description |
|---|---|
ocr tool | recognize / status / install / check actions |
| Image inputs | Local path, or attachment_id (an image already in the conversation) |
| Output | Reading-ordered text, per-block bounding boxes, review flags (low confidence / amounts / numbers / dates / quantities), heuristic Markdown tables |
| Robustness | Survives MNN diagnostics in engine stdout; honors cancellation and timeout |
| Settings card | On dsh ≥ 0.1.0-rc.7 the plugin registers the tool-ocr namespace: the web Settings → Plugins page renders a card that edits the engine command, model tier, and run bounds live — no composition edit needed |
Quick start
1. Install the engine — grab nbocr from the newbee-ocr-cli releases (one-line installer or prebuilt archive):
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
2. Install the plugin
dsh plugin --profile web add dsh-tool-ocr
# or: cd ~/.dsh/profiles/web && pnpm add dsh-tool-ocr
3. Mount it in your profile's cordis.patch.yml:
- insert:
- id: ocr
name: 'dsh-tool-ocr'
inject: [tools, subprocess, systemPrompt]
config:
command: 'C:/path/to/nbocr.exe' # required — the nbocr executable
That's it — restart dsh, then point the model at an image: ocr { path: "C:/screenshot.png" }. To tune recognition (language, model tier, limits), open Settings → Plugins → Plugin config and edit the OCR card; changes apply on save, no restart needed. command is the only field that must come from the composition.
Image inputs
pathworks on every dsh build: the model reads the file from disk.attachment_idneeds a build that admits images for text-only models (e.g. the dsh fork withapi-gateway.allowImagePlaceholder: true): images enter the session, the llm layer substitutes[image attachment <id>]text, and the model hands the id toocr.
Configuration
| Field | Default | Meaning |
|---|---|---|
command | — (required) | The nbocr executable: absolute path or PATH-resolved name. |
args | [] | Extra arguments before the nbocr subcommand (no shell). |
env | {} | Extra environment entries. |
language | chinese | Recognition model/language alias. |
detModel | v6-tiny | Detection model tier. |
modelsDir | '' | Model directory for non-embedded models; empty uses embedded models. |
maxImageBytes | 26214400 | Largest accepted image in bytes. |
maxOutputBytes | 2000000 | Largest collected engine stdout in bytes. |
maxTextChars | 12000 | Largest recognized text returned in text. |
timeoutMs | 600000 | Tool-call timeout budget in ms. |
Tool usage
ocr { path | attachment_id, action?, include_boxes?, table?, max_text_chars? }
status probes readiness without engine work; check runs a real end-to-end 1x1 probe.
Development
pnpm typecheck # tsc --noEmit
pnpm test # vitest
pnpm lint # oxlint
Real-engine smoke (skipped unless both env vars are set):
NBOCR_BIN=/path/to/nbocr OCR_E2E_IMAGE=/path/to/image.png pnpm test
License
MIT
Project files and signals
Shown items are public repository signals detected in the directory snapshot.
Repository information
- Language
- TypeScript
- License
- MIT
- Latest release
- v0.1.0
- Last updated
- Aug 18, 2026, 1:40 PM
Install deliberately
Review source code, permissions, lifecycle hooks, dependencies and network access. Test untrusted plugins in an isolated environment.