{"data":{"slug":"nameetp-pdfmux","name":"pdfmux","tagline":"PDF extraction with self-healing and cost-aware mechanisms","github_url":"https://github.com/NameetP/pdfmux","owner":"NameetP","repo":"pdfmux","owner_avatar_url":"https://avatars.githubusercontent.com/u/93118951?v=4","primary_language":"Python","stars":82,"forks":14,"topics":["ai-agent","docling","document-ai","document-parsing","langchain","llamaindex","llm","mcp","mcp-server","ocr","opendataloader","pdf","pdf-extraction","pdf-parser","pdf-to-json","pdf-to-markdown","python","rag","self-healing","structured-extraction"],"archived":false,"github_pushed_at":"2026-09-12T02:47:28+00:00","maintenance_label":"Active","stars_delta_30d":3,"url":"https://www.graphcanon.com/tools/nameetp-pdfmux","markdown_url":"https://www.graphcanon.com/tools/nameetp-pdfmux.md","api_url":"https://www.graphcanon.com/api/graphcanon/tools/nameetp-pdfmux","graph_url":"https://www.graphcanon.com/api/graphcanon/graph?tool=nameetp-pdfmux","description":"PDF extraction that audits its own output — and certifies any other extractor's, catching pages they silently dropped. Verify signed manifests offline: free, MIT, no account. 0.903 on opendataloader-bench, #2 of 8 engines. 7-tool MCP server.","homepage_url":"https://pdfmux.com","license":"MIT","open_issues":4,"watchers":0,"ai_summary":"A Python library for extracting information from PDF documents, supporting various optimization modes that balance accuracy and cost.","readme_excerpt":"## Install\n\n```bash\npip install pdfmux\n```\n\nThat handles digital PDFs. **For any real-world batch, install `pdfmux[ocr]` too** — almost every directory of PDFs has at least one scan, and without OCR those pages return empty text:\n\n```bash\npip install \"pdfmux[ocr]\"             # ⭐ recommended — RapidOCR for scanned pages (~200MB, CPU)\n```\n\nOther backends, by document type:\n\n```bash\npip install \"pdfmux[tables]\"          # Docling — table-heavy docs (~500MB)\npip install \"pdfmux[opendataloader]\"  # OpenDataLoader — complex layouts (Java 11+)\npip install \"pdfmux[marker]\"          # Marker — neural extraction for academic papers\npip install \"pdfmux[llm]\"             # Gemini fallback (default LLM)\npip install \"pdfmux[llm-claude]\"      # Claude (Sonnet / Opus)\npip install \"pdfmux[llm-openai]\"      # GPT-4o family\npip install \"pdfmux[llm-ollama]\"      # Ollama (any local model)\npip install \"pdfmux[llm-mistral]\"     # Mistral OCR API ($0.002/page)\npip install \"pdfmux[llm-all]\"         # all LLM providers (incl. Gemma via Gemini key)\npip install \"pdfmux[watch]\"           # `pdfmux watch <dir>` auto-convert on change\npip install \"pdfmux[all]\"             # everything\n```\n\nRequires Python 3.11+.\n\n---\n\n# cost-aware extraction with budget cap\npdfmux convert report.pdf --mode economy --budget 0.50\n\n---\n\n# predict cost before running anything\npdfmux estimate big-report.pdf --llm-provider gemini\n\n---\n\n# │ Extractor        │ Status      │ Version │ Install                          │\n\n---\n\n# │ Docling          │ missing     │ --      │ pip install pdfmux[tables]       │\n\n---\n\n# │ Surya            │ missing     │ --      │ pip install pdfmux[ocr-heavy]    │\n\n---\n\n# {\"event\":\"classified\",\"page_count\":312,\"plan\":\"pymupdf+gemini-fallback\"}\n\n---\n\n# Default install — already includes python-bidi for RTL reordering\npip install pdfmux\n\n---\n\n## Cost Modes\n\n| Mode | Behavior | Typical cost |\n|------|----------|-------------|\n| economy | Rule-based backends only. No LLM calls. | $0/page |\n| balanced | LLM only for pages that fail rule-based extraction. | ~$0.002/page avg |\n| premium | LLM on every page for maximum quality. | ~$0.01/page |\n\nSet a hard budget cap: `--budget 0.50` stops LLM calls when spend reaches $0.50 per document.\n\n---\n\n## License\n\nThe pdfmux library and MCP server in this repository are **[MIT](LICENSE)** licensed — free for any use, and every released version stays MIT.\n\nThe confidence-budgeted **decision-trace** method (the persisted per-page decision trace with retained rejected candidates, and the monotonic repair guard) is **patent-pending** (US Provisional App No. 64/106,302) and is reserved for pdfmux Cloud/Pro under a separate commercial license — it is not part of the MIT grant. See **[LICENSING.md](LICENSING.md)** and **[NOTICE](NOTICE)**.","github_created_at":"2026-03-03T16:32:24+00:00","created_at":"2026-07-11T10:49:25.858071+00:00","updated_at":"2026-09-20T05:26:08.253002+00:00","categories":[{"slug":"data-retrieval","name":"Data & Retrieval","url":"https://www.graphcanon.com/categories/data-retrieval","markdown_url":"https://www.graphcanon.com/categories/data-retrieval.md","api_url":"https://www.graphcanon.com/api/graphcanon/categories/data-retrieval"},{"slug":"evaluation-observability","name":"Evaluation & Observability","url":"https://www.graphcanon.com/categories/evaluation-observability","markdown_url":"https://www.graphcanon.com/categories/evaluation-observability.md","api_url":"https://www.graphcanon.com/api/graphcanon/categories/evaluation-observability"}],"tags":[{"slug":"ocr","name":"ocr"},{"slug":"pdf-extraction","name":"pdf-extraction"},{"slug":"self-healing","name":"self-healing"},{"slug":"structured-extraction","name":"structured-extraction"}],"trust":{"provenance":{"is_fork":false,"github_id":1171815558,"owner_type":"User","methodology":"github_public_v1","parent_repo":null,"near_duplicate_slugs":[]},"computed_at":"2026-09-20T05:26:05.628Z","maintenance":{"label":"Active","score":82,"methodology":"github_public_v1","releases_90d":6,"days_since_push":8,"last_release_at":"2026-07-27T17:40:08Z","stars_delta_30d":3,"open_issues_delta_30d":0},"security_summary":{"status":"findings","scanner":"mcp_manifest@v1","low_count":0,"high_count":0,"last_scan_at":"2026-07-11T10:49:27.415Z","medium_count":1,"scan_profile":"mcp_manifest","critical_count":0}},"capability_facts":{"mcp":{"source":"repo_scan","observed_at":"2026-09-20T05:26:06.645Z","server_manifest":false},"scan":{"source":"repo_scan","observed_at":"2026-09-20T05:26:06.645Z"},"deploy":{"source":"dockerfile:Dockerfile","self_host":true,"observed_at":"2026-09-20T05:26:06.645Z","managed_saas":false},"has_cli":{"value":true,"source":"pyproject.toml:[project.scripts]","observed_at":"2026-09-20T05:26:06.645Z"},"languages":{"value":["python"],"source":"github.language+pyproject.toml","observed_at":"2026-09-20T05:26:06.645Z"},"has_docker":{"value":true,"source":"dockerfile:Dockerfile","observed_at":"2026-09-20T05:26:06.645Z"},"license_spdx":{"value":"MIT","source":"github.license","observed_at":"2026-09-20T05:26:06.645Z"}},"decision_facts":{"hosting":null,"pricing":null,"requirements":null,"constraints":null,"when_to_use":["You need high accuracy without LLMs or GPUs.","Handling diverse document types including scanned PDFs.","Want budget control across different extraction modes."],"when_not_to_use":["Require real-time GPU-based AI processing for speed.","Working with non-PDF file formats as sole tool."],"source":"enrich:decision_facts","observed_at":"2026-07-12T13:02:56.134Z"},"constraint_facets":null,"decision_summary":[{"label":"Adopt for","value":"pdfmux offers efficient PDF extraction with self-healing, no AI required, at various cost modes."}]}}