feat: update XGBoost weights URL and add Gradio demoβ
jieluo1024
00b2f48
- Fix XGBoost router weights download URL to use GitHub raw links
- Add timeout and fallback URLs for model download
- Add Gradio demo interface (demo/app.py, demo/pipeline.py)
- Add app.py entry point for HuggingFace Spaces
- Add requirements.txt for dependencies
docs: add project README, CONTRIBUTING guide, and per-package READMEsβ
yin+1: Claude Opus 4.6
b8ca6f2
Rewrite the top-level README with:
- Quick start (uv sync + download weights + run bench CLI)
- Architecture diagram with implemented/stub status table
- MVP benchmark results on OmniDocBench-100
- Key data structures (RouterDecision, ExtractedDoc, QualityScore)
- Design principles, CLI reference, output format spec
Add CONTRIBUTING.md covering:
- Dev environment setup
- Project structure overview
- Code conventions (naming, immutability, error handling)
- Feature extractor parity rules (124-column contract)
- How to add a new parser backend
- Commit message conventions
Add per-package READMEs for all 7 workspace packages explaining
each one's role, usage, and scope.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Ship the first end-to-end cut of the pdfsys pipeline on OmniDocBench-100:
* pdfsys-router: port FinePDFs PDFFeatureExtractor (15 page features Γ 8
sampled pages + 4 doc features = 124 columns) and load the upstream
xgb.ubj weights via a thin XgbRouterModel wrapper. Router.classify()
returns a RouterDecision with Backend {MUPDF, PIPELINE, VLM, DEFERRED},
ocr_prob, and the full feature dict for debugging. Seeded RNG keeps the
feature vector reproducible per PDF. Weights live under models/ and are
gitignored; download_weights.py fetches them from the HF LFS media URL.
* pdfsys-parser-mupdf: text-ok backend using page.get_text("blocks",
sort=True), emits one Segment per paragraph-shaped block with bbox
normalized to [0, 1] and converts the whole doc into an ExtractedDoc
with merged Markdown. No layout-analyser dependency by design.
* pdfsys-bench: add quality.py (ModernBERT-large regression head from
HuggingFaceFW/finepdfs_ocr_quality_classifier_eng_Latn, loaded in
β¦
chore: bootstrap pdfsys workspace with 7 package skeletonsβ