설치
npx -y @deepseek-ai/dsh plugin --profile web add github:henryxiao709/dsh-pdf이 설치 명령은 GitHub 저장소 주소에서 생성된 확인되지 않은 시작점입니다.
README
유지 관리자가 작성한 문서 스냅샷입니다.
dsh-pdf — PDF Reader Plugin for DeepSeek Harness
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.
![]() | ![]() |
✨ Features
read_pdftool — 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-USrecognizers; - tesseract.js (optional): drop
chi_sim.traineddata(.gz)andeng.traineddata(.gz)into<cacheDir>/tessdata/to enable.
- Windows WinRT OCR (primary, zero-install): uses the OS built-in
- Mode control —
mode=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
webor any Cordis-based host) - Node.js ≥ 20 (for the host)
- Windows with
zh-Hans-CN/en-USlanguage 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:
| Key | Default | Description |
|---|---|---|
maxFileBytes | 209715200 | byte cap per PDF read |
readLimitPages | 50 | max pages processed per call |
ocrMinChars | 120 | pages with fewer text-layer chars get OCR'd in auto mode |
ocrScale | 2 | render scale for OCR (2 ≈ 144 DPI) |
ocrEngine | auto | auto / windows / tesseract |
ocrTimeoutMs | 60000 | per-page OCR timeout |
maxCharsPerPage | 20000 | per-page character cap in results |
cacheEntries | 4 | result cache entries |
cacheDir | %TEMP%/dsh-pdf | scratch dir for the OCR script and temp images |
Settings UI: the plugin registers a
dsh-pdfsettings section — all keys above are adjustable live in the DSH settings UI (Settings → Plugins → dsh-pdf); changes apply immediately and clear the result cache. Thecordis.patch.ymlvalues 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 ownnode_modules(scripts/link-deps.mjs), pinned to the host's exact versions. - Multiple pdfjs instances — the plugin forces
globalThis.Path2D/DOMMatrix/ImageDatato its own canvas classes sopage.render()never hits a mixed-instance type error.
🧹 Troubleshooting
OCR failed (… none of these types String, Path …)— restart DSH after updating the plugin (ordev_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_packagereportsCannot find package '@deepseek-ai/…'— runnode scripts/link-deps.mjsfirst, then retry; if it still fails, restart the DSH host once (Node's internal module cache may hold a stale failed import).
📄 License
MIT © 2026 henryxiao709
프로젝트 파일 및 신호
표시된 항목은 디렉터리 스냅샷에서 감지된 공개 저장소 신호입니다.
저장소 정보
- 언어
- JavaScript
- 라이선스
- MIT
- 마지막 업데이트
- 2026. 8. 16. 오전 6:27
신중하게 설치하기
소스 코드, 권한, 수명 주기 스크립트, 의존성 및 네트워크 접근을 검토하고 신뢰하지 않는 플러그인은 격리 환경에서 테스트하세요.

