DeepSeek Harness plugin

dsh-pdf-henryxia

A DeepSeek Harness (DSH) plugin that reads PDF files of any size (no 64KB limit): full Unicode text extraction (Chinese/English) via pdfjs-dist, with automatic OCR for scanned or image-heavy pages

Jump to install

Source facts

Repository
henryxiao709/dsh-pdf
Latest update
Aug 16, 2026
Category
Tools & Capabilities
GitHub stars
0
Format
plugin
Catalog evidence
Upstream dsh.bundle evidence
Evidence path
package.json#dsh.bundle
Checked against
0.1.0-rc.8
Upstream check date
2026-08-20

This evidence comes from the upstream catalog. This site has not installed, run, or security-reviewed the plugin.

Install

Start with a prompt that asks an agent to review the GitHub repository and source. Switch to the command if you want to install it yourself.

Copy this prompt into DSH, Codex, or another agent and ask it to review the GitHub repository and source first.

Do not install or run any commands yet. Read this plugin's GitHub repository, README, and relevant source code. Then answer the questions below clearly and directly so I can decide whether it fits my needs:

1. What is this plugin, and what problem does it solve?
2. Who is it for, and what are its typical use cases?
3. How is it used after installation? Include one minimal example.
4. What known limitations or privacy, security, compatibility, or maintenance risks does it have?
5. Give a clear recommendation: recommend, conditionally recommend, or do not recommend, with reasons.

Distinguish statements documented by the repository, inferences from source code, and unknowns. If evidence is insufficient, say so explicitly. Do not guess or simply repeat the README.

GitHub: https://github.com/henryxiao709/dsh-pdf
Plugin: dsh-pdf-henryxia
Author: henryxiao709

Check the source files

Read the README and other files from this plugin directory before installing.

File explorer4 files
README.mdSource · read only
README language

dsh-pdf — PDF Reader Plugin for DeepSeek Harness

中文说明

!License !DSH !Platform

A DeepSeek Harness (DSH) plugin that lets the agent read PDF files of any size — no 64KB limit. It extracts the full Unicode text layer (Chinese, English, any script) via pdfjs-dist, and automatically OCRs scanned / image-heavy pages so even handwritten lecture notes become readable text.

![usage demo](docs/screenshot-usage.png)![OCR demo](docs/screenshot-ocr.png)

---

✨ Features

  • read_pdf tool — returns PDF text page by page (pages="1-3", "2", "1,3-5", "all").
  • No 64KB cap — single-file limit defaults to 200 MB (maxFileBytes).
  • Full Unicode text layer — Chinese & English out of the box, other scripts too.
  • Automatic OCR fallback (mode: auto): pages with little text are rendered and OCR'd:

- Windows WinRT OCR (primary, zero-install): uses the OS built-in zh-Hans-CN + en-US recognizers; - tesseract.js (optional): drop chi_sim.traineddata(.gz) and eng.traineddata(.gz) into <cacheDir>/tessdata/ to enable.

  • Mode controlmode=text (text layer only, fast), mode=ocr (force OCR every page), ocrEngine=windows|tesseract.
  • MIT licensed — free to use, modify and redistribute.

📦 Requirements

  • A running DeepSeek Harness instance (profile web or any Cordis-based host)
  • Node.js ≥ 20 (for the host)
  • Windows with zh-Hans-CN/en-US language packs for the Windows OCR engine (most Windows 10/11 installs include them) — or tesseract.js traineddata

🚀 Installation

# 1. clone
git clone https://github.com/henryxiao709/dsh-pdf.git
cd dsh-pdf

# 2. install dependencies (all registry-pinned, including the matching
#    @deepseek-ai/* versions — no manual linking needed)
npm install --ignore-scripts

# 3. inject into the running DSH (via dsh-super-injector, if installed)
#    tell your DSH agent:  dev_install_package <absolute path to dsh-pdf>
#    or add it to the profile's dsh.profile.bundles for startup assembly

> All @deepseek-ai/* dependencies are pinned to the same versions the DSH > host ships (0.1.0-rc.6), so the plugin works identically whether it is > runtime-injected or assembled at boot — no junction linking required.

🧰 Usage

read_pdf file_path=... [pages="1-3"] [mode=auto|text|ocr] [ocrEngine=auto|windows|tesseract] [maxCharsPerPage=20000]

Example result:

{
  "path": ".../test.pdf",
  "totalPages": 7,
  "mode": "auto",
  "pages": [
    { "number": 1, "text": "test… [OCR] test…", "source": "mixed", "chars": 163 },
    { "number": 2, "text": "1 test)…", "source": "text", "chars": 876 }
  ],
  "engines": ["windows: ok", "tesseract: unavailable (no traineddata)"],
  "warnings": []
}

Each page reports source: text (text layer only), ocr (OCR only), or mixed (both).

⚙️ Configuration

The plugin registers a dsh-pdf settings section (host namespace + a settings-UI card): every knob below is adjustable live in the DSH settings UI (Settings → Plugins → dsh-pdf); changes apply immediately and clear the result cache. The same keys can be set in cordis.patch.yml as the composition base:

KeyDefaultDescription
maxFileBytes209715200byte cap per PDF read
readLimitPages50max pages processed per call
ocrMinChars120pages with fewer text-layer chars get OCR'd in auto mode
ocrScale2render scale for OCR (2 ≈ 144 DPI)
ocrEngineautoauto / windows / tesseract
ocrTimeoutMs60000per-page OCR timeout
maxCharsPerPage20000per-page character cap in results
cacheEntries4result cache entries
cacheDir%TEMP%/dsh-pdfscratch dir for the OCR script and temp images

> Settings UI: the plugin registers a dsh-pdf settings section — all keys > above are adjustable live in the DSH settings UI (Settings → Plugins → > dsh-pdf); changes apply immediately and clear the result cache. The > cordis.patch.yml values act as the composition base.

🏗️ How it works

read_pdf
 ├─ ctx.fs.readBytes (no 64KB cap)
 ├─ pdfjs-dist: per-page text layer extraction (full Unicode)
 └─ mode=auto: pages with < ocrMinChars chars
      ├─ render page → PNG (@napi-rs/canvas, scale 2)
      └─ OCR: Windows WinRT OCR (powershell.exe, zh-Hans-CN + en-US)
               └─ tesseract.js fallback (WASM, needs traineddata)

Known host caveats handled inside the plugin:

  • Module resolution for runtime-injected plugins — the plugin links its @deepseek-ai/* peers into its own node_modules (scripts/link-deps.mjs), pinned to the host's exact versions.
  • Multiple pdfjs instances — the plugin forces globalThis.Path2D/DOMMatrix/ImageData to its own canvas classes so page.render() never hits a mixed-instance type error.

🧹 Troubleshooting

  • OCR failed (… none of these types String, Path …) — restart DSH after updating the plugin (or dev_reload_package dsh-pdf); this was a stale-module-cache artifact during development.
  • tesseract: unavailable (no traineddata) — expected unless you provide traineddata; Windows OCR is the default engine and needs no downloads.
  • dev_install_package reports Cannot find package '@deepseek-ai/…' — run node scripts/link-deps.mjs first, then retry; if it still fails, restart the DSH host once (Node's internal module cache may hold a stale failed import).

📄 License

[MIT](LICENSE) © 2026 henryxiao709