P0: - Fix 2: _ref_number_sort_key handles [N] bracket format (ocr_render.py:481) - Fix 4: remove figure_caption from _INSERT_CANDIDATE_ROLES (ocr_document.py:3846) - Fix 5: filter demoted body_paragraph from figure legends (ocr_figures.py:2950) P1: - figure containment render-hygiene pass after table inventory writeback - 6 helpers: _cluster_bboxes_by_proximity, _is_contained, _highly_overlaps_any_matched_region, _figure_region_bbox, _matched_asset_keys, tag_figure_contained_text - Wire call site in postprocess_ocr_result() (ocr.py:1891) Infra: - Sync workspace fulltext after rebuild (asset_index.py) - Fix UnboundLocalError on index-refresh (sync_service.py) - Add missing frontmatter fields to field registry (field_registry.yaml) - 283 + 19 = 302 tests passing |
||
|---|---|---|
| .agents/skills | ||
| .github | ||
| .husky | ||
| .opencode | ||
| .planning | ||
| .tmp/tail_pdf_samples | ||
| audit | ||
| docs | ||
| fixtures | ||
| node_modules | ||
| paperforge | ||
| project | ||
| scripts | ||
| tests | ||
| .gitignore | ||
| .pre-commit-config.yaml | ||
| _amb_detail.py | ||
| _check_effect.py | ||
| _chk_pdf.py | ||
| _chk_vfs_p11.py | ||
| _extract_master_figs.py | ||
| _figmap.json | ||
| _final_stats.py | ||
| _master_funcs.txt | ||
| _render_full.py | ||
| _test_6qnr.py | ||
| AGENTS.md | ||
| CHANGELOG.md | ||
| CONTRIBUTING.md | ||
| INSTALLATION.md | ||
| LICENSE | ||
| manifest.json | ||
| OCR-V2-READINESS-SUMMARY.md | ||
| package-lock.json | ||
| package.json | ||
| paperforge.json | ||
| PROJECT-MANAGEMENT.md | ||
| pyproject.toml | ||
| README.en.md | ||
| README.md | ||
| README.zh-CN.md | ||
| README.zh.md | ||
| requirements.txt | ||
| REVIEW.md | ||
| skills-lock.json | ||
PaperForge
简体中文 · English
铸知识为器,启洞见之明。 — Forge Knowledge, Empower Insight.
PaperForge brings your Zotero library into Obsidian. Sync papers, run OCR, extract figures, and do AI-assisted deep reading — all inside a single vault.
0. What PaperForge Is
PaperForge is not just an Obsidian plugin. It has two parts:
| Part | What | Does | Where |
|---|---|---|---|
| Obsidian Plugin | main.js + manifest.json + styles.css |
Dashboard, buttons, settings UI | .obsidian/plugins/paperforge/ in your vault |
| Python Package | paperforge |
Sync, OCR, Doctor, repair | Your system Python (pip install) |
The plugin is the interface. The Python package is the engine. Every button you click in the plugin actually runs a Python command behind the scenes.
After installing the plugin, you MUST verify that the Python package is also installed and version-matched.
1. Install the Obsidian Plugin
Option A: BRAT (Recommended)
- Install BRAT from the Obsidian community plugin browser
- Open BRAT settings →
Add Beta Plugin - Enter:
https://github.com/LLLin000/PaperForge - BRAT downloads the latest
main.js,manifest.json, andstyles.cssand installs them - Settings → Community Plugins → enable PaperForge
BRAT auto-detects GitHub Release updates. No manual downloads needed.
Option B: Manual Download
- Go to Releases
- Download the three files:
main.js,manifest.json,styles.css - Create
.obsidian/plugins/paperforge/in your vault - Put the three files there
- Restart Obsidian → Settings → Community Plugins → enable PaperForge
Manual install does not auto-update. You'll need to re-download for each new version.
2. Install the Python Package
After enabling the plugin, open the PaperForge settings tab. You'll see a Runtime Status section:
Plugin v1.5.0 → Python Package v1.5.0 ✓ Matched
- If it says "Not installed" → click Open Wizard to re-run the setup process
- If it says "Mismatch" → the Python package auto-updates when the plugin updates. If it didn't succeed, click Update Runtime to manually trigger
3. Quickstart
# 1. Export from Zotero (Better BibTeX JSON, Keep updated) to exports/
# 2. Sync
paperforge sync
# 3. Mark a paper for OCR in its frontmatter: do_ocr: true
# 4. Run OCR
paperforge ocr
# 5. Mark for deep reading: analyze: true
# 6. In your Agent chat:
/pf-deep <zotero_key>
Documentation
| If you want to | Read |
|---|---|
| Full tutorial, from install to deep read | Getting Started |
| Troubleshooting | Troubleshooting |
| Command reference | Commands |
| How to update | Update Guide |
| Architecture / Maintenance / Release | Architecture |
| AI Agent collaboration | AGENTS.md |
License
CC BY-NC-SA 4.0. Non-commercial use only.
Acknowledgments
Built on PaddleOCR, Obsidian, Better BibTeX for Zotero, and other great open-source projects.