--- title: "pymupdf4llm" type: "AI Tool" url: "https://aidemos.com/tools/pymupdf4llm" description: "We tested PyMuPDF4LLM on a hybrid annual report and a digital report: it kept prose and hierarchy, but broke on scans, dense tables, and images." category: "developer-tools" website: "https://pymupdf.readthedocs.io/en/latest/pymupdf4llm/?via=aidemos" published: "2026-07-21T07:41:11.663636+00:00" updated: "2026-07-21T15:32:37.030133+00:00" evidenceCount: 101 verifiedCount: 0 coverage: "partial" --- # pymupdf4llm Open-source PDF-to-markdown for clean native PDFs, but unreliable on scans, dense tables, and images. ## TL;DR Verdict **Strong on clean native PDFs, but brittle on scans and dense layouts** **Where it wins:** - You are converting clean, native-digital PDFs locally and want usable markdown without a hosted service. - Your priority is readable prose and straightforward tables from well-structured pages. - You can tolerate charts being reduced to OCR text and images being dropped. **Main limitation:** Your PDFs are scanned or OCR-heavy multi-column documents. **Pricing:** Open source $0 `Open source` · `Native PDFs` · `Financial tables` · `Scanned pages` **Website:** [Visit pymupdf4llm](https://pymupdf.readthedocs.io/en/latest/pymupdf4llm/?via=aidemos) ## Evidence (first-party, tested) *101 tested cells · 0/101 artifact-verified. Scores are out of 5. Cite a cell by its Evidence ID, e.g. `ev:pymupdf4llm·cross·bonus-unique-or-anomalous-behaviors`.* | Criterion | Scenario | Verdict | Score | Tested | Proof | Evidence ID | | --- | --- | --- | --- | --- | --- | --- | | Bonus: Unique or Anomalous Behaviors | cross-scenario | ✓ worked | — | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/pymupdf4llm-pymupdf4llm-input1-hybridearnings-chart--d7b12acca715.png) | `ev:pymupdf4llm·cross·bonus-unique-or-anomalous-behaviors` | | Bonus: Unique or Anomalous Behaviors | Scanned Research Paper INT 1983-07 Issue 333 (image-only) | ⚠ struggled | — | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/pymupdf4llm-pymupdf4llm-input3-scannedpaper-table-6--ffb1861d58d8.png) | `ev:pymupdf4llm·scanned-research-paper-int-1983-07-issue-333-image-only·bonus-unique-or-anomalous-behaviors` | | Bonus: Unique or Anomalous Behaviors | Target 2015 Annual Report | ✓ worked | — | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/pymupdf4llm-pymupdf4llm-input1-hybridearnings-chart--d7b12acca715.png) | `ev:pymupdf4llm·target-2015-annual-report·bonus-unique-or-anomalous-behaviors` | | Bonus: Unique or Anomalous Behaviors | Sumitomo Heavy Industries consolidated financial report | ⚠ struggled | — | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/pymupdf4llm-pymupdf4llm-input2-financialpdf-quarterl-052a903bfa21.png) | `ev:pymupdf4llm·sumitomo-heavy-industries-consolidated-financial-report·bonus-unique-or-anomalous-behaviors` | | Bonus: Unique or Anomalous Behaviors | Scanned research paper | ⚠ struggled | — | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/pymupdf4llm-pymupdf4llm-input3-scannedpaper-table-6--ffb1861d58d8.png) | `ev:pymupdf4llm·scanned-research-paper·bonus-unique-or-anomalous-behaviors` | | Bonus: Unique or Anomalous Behaviors | Scanned research paper (image-only) | ⚠ struggled | — | — | — | `ev:pymupdf4llm·scanned-research-paper-image-only·bonus-unique-or-anomalous-behaviors` | | Caption/Figure Association | Target 2015 Annual Report | ✓ worked | — | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/pymupdf4llm-pymupdf4llm-input1-hybridearnings-financ-11a1512840d0.png) | `ev:pymupdf4llm·target-2015-annual-report·caption-figure-association` | | Caption/Figure Association | Scanned Research Paper INT 1983-07 Issue 333 (image-only) | ✗ failed | — | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/pymupdf4llm-pymupdf4llm-input3-scannedpaper-figure-2-ed860c56fe40.png) | `ev:pymupdf4llm·scanned-research-paper-int-1983-07-issue-333-image-only·caption-figure-association` | | Caption/Figure Association | Scanned research paper | ⚠ struggled | — | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/pymupdf4llm-pymupdf4llm-input3-scannedpaper-figure-2-ed860c56fe40.png) | `ev:pymupdf4llm·scanned-research-paper·caption-figure-association` | | Caption/Figure Association | Sumitomo Heavy Industries consolidated financial report | ◐ mixed | — | — | — | `ev:pymupdf4llm·sumitomo-heavy-industries-consolidated-financial-report·caption-figure-association` | | Caption/Figure Association | Image-only scanned research paper | ⚠ struggled | — | — | — | `ev:pymupdf4llm·image-only-scanned-research-paper·caption-figure-association` | | Caption/Figure Association | Scanned research paper (image-only) | ⚠ struggled | — | — | — | `ev:pymupdf4llm·scanned-research-paper-image-only·caption-figure-association` | | Chart Reconstruction | Scanned Research Paper INT 1983-07 Issue 333 (image-only) | ✗ failed | — | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/pymupdf4llm-pymupdf4llm-input3-scannedpaper-figure-2-ed860c56fe40.png) | `ev:pymupdf4llm·scanned-research-paper-int-1983-07-issue-333-image-only·chart-reconstruction` | | Chart Reconstruction | Target 2015 Annual Report | ⚠ struggled | — | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/pymupdf4llm-pymupdf4llm-input1-hybridearnings-sales--7e63fbc65543.png) | `ev:pymupdf4llm·target-2015-annual-report·chart-reconstruction` | | Chart Reconstruction | Sumitomo Heavy Industries consolidated financial report | ◐ mixed | — | — | — | `ev:pymupdf4llm·sumitomo-heavy-industries-consolidated-financial-report·chart-reconstruction` | | Chart Reconstruction | Image-only scanned research paper | ✗ failed | — | — | — | `ev:pymupdf4llm·image-only-scanned-research-paper·chart-reconstruction` | | Chart Reconstruction | Scanned research paper (image-only) | ⚠ struggled | — | — | — | `ev:pymupdf4llm·scanned-research-paper-image-only·chart-reconstruction` | | Chart retention | Scanned Research Paper (Image-Only) | ✗ failed | — | — | — | `ev:pymupdf4llm·scanned-research-paper-image-only·chart-retention` | | Chart retention | Target 2015 Annual Report | ◐ mixed | — | — | — | `ev:pymupdf4llm·target-2015-annual-report·chart-retention` | | Chart retention | Scanned Research Paper INT 1983-07 Issue 333 | ✗ failed | — | — | — | `ev:pymupdf4llm·scanned-research-paper-int-1983-07-issue-333·chart-retention` | | Chart retention | Scanned Research PDF | ✗ failed | — | — | — | `ev:pymupdf4llm·scanned-research-pdf·chart-retention` | | Chart retention | Hybrid Earnings Report | ✗ failed | — | — | — | `ev:pymupdf4llm·hybrid-earnings-report·chart-retention` | | Chart retention | Scanned research paper | ✗ failed | — | — | — | `ev:pymupdf4llm·scanned-research-paper·chart-retention` | | Chart retention | Image-only scanned research paper | ✗ failed | — | — | — | `ev:pymupdf4llm·image-only-scanned-research-paper·chart-retention` | | Chart retention | Research Paper INT 1983-07 Issue 333 as Image-Only Scanned PDF | ✗ failed | — | — | — | `ev:pymupdf4llm·research-paper-int-1983-07-issue-333-as-image-only-scanned-pdf·chart-retention` | | Document Hierarchy | Sumitomo Heavy Industries consolidated financial report | ◐ mixed | — | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/pymupdf4llm-pymupdf4llm-input2-financialpdf-summary--9d1de6104975.png) | `ev:pymupdf4llm·sumitomo-heavy-industries-consolidated-financial-report·document-hierarchy` | | Document Hierarchy | Scanned Research Paper INT 1983-07 Issue 333 (image-only) | ✗ failed | — | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/pymupdf4llm-pymupdf4llm-input3-scannedpaper-study-ar-dcdb72b0df0f.png) | `ev:pymupdf4llm·scanned-research-paper-int-1983-07-issue-333-image-only·document-hierarchy` | | Document Hierarchy | Target 2015 Annual Report | ✓ worked | — | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/pymupdf4llm-pymupdf4llm-input1-hybridearnings-busine-2eec85b10a9c.png) | `ev:pymupdf4llm·target-2015-annual-report·document-hierarchy` | | Document Hierarchy | Scanned research paper | ⚠ struggled | — | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/pymupdf4llm-pymupdf4llm-input3-scannedpaper-study-ar-d9471a84729b.png) | `ev:pymupdf4llm·scanned-research-paper·document-hierarchy` | | Document Hierarchy | Image-only scanned research paper | ⚠ struggled | — | — | — | `ev:pymupdf4llm·image-only-scanned-research-paper·document-hierarchy` | | Document Hierarchy | Scanned research paper (image-only) | ⚠ struggled | — | — | — | `ev:pymupdf4llm·scanned-research-paper-image-only·document-hierarchy` | | Ease of deployment and maintenance | cross-scenario | ✓ worked | — | — | — | `ev:pymupdf4llm·cross·ease-of-deployment-and-maintenance` | | Image retention | Hybrid Earnings Report | ✗ failed | — | — | — | `ev:pymupdf4llm·hybrid-earnings-report·image-retention` | | Image Retention | Scanned Research Paper INT 1983-07 Issue 333 (image-only) | ✗ failed | — | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/pymupdf4llm-pymupdf4llm-input3-scannedpaper-usda-log-b0d7f974f992.png) | `ev:pymupdf4llm·scanned-research-paper-int-1983-07-issue-333-image-only·image-retention` | | Image Retention | Sumitomo Heavy Industries consolidated financial report | ✗ failed | — | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/pymupdf4llm-pymupdf4llm-input2-financialpdf-company--42ce89aed691.png) | `ev:pymupdf4llm·sumitomo-heavy-industries-consolidated-financial-report·image-retention` | | Image Retention | Target 2015 Annual Report | ✗ failed | — | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/pymupdf4llm-pymupdf4llm-input1-hybridearnings-ceo-im-8fe2950cf777.png) | `ev:pymupdf4llm·target-2015-annual-report·image-retention` | | Image Retention | Image-only scanned research paper | ✗ failed | — | — | — | `ev:pymupdf4llm·image-only-scanned-research-paper·image-retention` | | Image Retention | Scanned research paper (image-only) | ⚠ struggled | — | — | — | `ev:pymupdf4llm·scanned-research-paper-image-only·image-retention` | | Long/complex document handling | Target 2015 Annual Report | ✓ worked | — | — | — | `ev:pymupdf4llm·target-2015-annual-report·long-complex-document-handling` | | Long/Complex Document Robustness | Target 2015 Annual Report | ✓ worked | — | — | — | `ev:pymupdf4llm·target-2015-annual-report·long-complex-document-robustness` | | Long/Complex Document Robustness | Sumitomo Heavy Industries consolidated financial report | ✗ failed | — | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/pymupdf4llm-pymupdf4llm-input2-financialpdf-quarterl-052a903bfa21.png) | `ev:pymupdf4llm·sumitomo-heavy-industries-consolidated-financial-report·long-complex-document-robustness` | | Long/Complex Document Robustness | Scanned Research Paper INT 1983-07 Issue 333 (image-only) | ✗ failed | — | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/pymupdf4llm-pymupdf4llm-input3-scannedpaper-multicol-4f3192615e01.png) | `ev:pymupdf4llm·scanned-research-paper-int-1983-07-issue-333-image-only·long-complex-document-robustness` | | Long/Complex Document Robustness | Scanned research paper | ⚠ struggled | — | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/pymupdf4llm-pymupdf4llm-input3-scannedpaper-multicol-4c507eec6c7c.png) | `ev:pymupdf4llm·scanned-research-paper·long-complex-document-robustness` | | Long/Complex Document Robustness | Image-only scanned research paper | ⚠ struggled | — | — | — | `ev:pymupdf4llm·image-only-scanned-research-paper·long-complex-document-robustness` | | Long/Complex Document Robustness | Scanned research paper (image-only) | ⚠ struggled | — | — | — | `ev:pymupdf4llm·scanned-research-paper-image-only·long-complex-document-robustness` | | Markdown cleanliness | Sumitomo Heavy Industries Consolidated Financial Report | ⚠ struggled | — | — | — | `ev:pymupdf4llm·sumitomo-heavy-industries-consolidated-financial-report·markdown-cleanliness` | | Markdown cleanliness | Financial Report | ✗ failed | — | — | — | `ev:pymupdf4llm·financial-report·markdown-cleanliness` | | Markdown cleanliness | Hybrid Earnings Report | ◐ mixed | — | — | — | `ev:pymupdf4llm·hybrid-earnings-report·markdown-cleanliness` | | Markdown cleanliness | Target 2015 annual report | ◐ mixed | — | — | — | `ev:pymupdf4llm·target-2015-annual-report·markdown-cleanliness` | | OCR quality on scans | Scanned Research Paper (Image-Only) | ⚠ struggled | — | — | — | `ev:pymupdf4llm·scanned-research-paper-image-only·ocr-quality-on-scans` | | OCR quality on scans | Scanned Research Paper INT 1983-07 Issue 333 | ✗ failed | — | — | — | `ev:pymupdf4llm·scanned-research-paper-int-1983-07-issue-333·ocr-quality-on-scans` | | OCR quality on scans | Scanned Research PDF | ✗ failed | — | — | — | `ev:pymupdf4llm·scanned-research-pdf·ocr-quality-on-scans` | | OCR quality on scans | Scanned research paper | ✗ failed | — | — | — | `ev:pymupdf4llm·scanned-research-paper·ocr-quality-on-scans` | | OCR quality on scans | Image-only scanned research paper | ✗ failed | — | — | — | `ev:pymupdf4llm·image-only-scanned-research-paper·ocr-quality-on-scans` | | OCR quality on scans | Research Paper INT 1983-07 Issue 333 as Image-Only Scanned PDF | ✗ failed | — | — | — | `ev:pymupdf4llm·research-paper-int-1983-07-issue-333-as-image-only-scanned-pdf·ocr-quality-on-scans` | | OCR quality on scans | Research Paper INT 1983-07: Iss 333 (image-only scanned PDF) | ✗ failed | — | — | — | `ev:pymupdf4llm·research-paper-int-1983-07-iss-333-image-only-scanned-pdf·ocr-quality-on-scans` | | Performance and resource usage | cross-scenario | ✓ worked | — | — | — | `ev:pymupdf4llm·cross·performance-and-resource-usage` | | Reading order & structure | Sumitomo Heavy Industries Consolidated Financial Report | ✓ worked | — | — | — | `ev:pymupdf4llm·sumitomo-heavy-industries-consolidated-financial-report·reading-order-structure` | | Reading order & structure | Scanned Research Paper (Image-Only) | ⚠ struggled | — | — | — | `ev:pymupdf4llm·scanned-research-paper-image-only·reading-order-structure` | | Reading order & structure | Target 2015 Annual Report | ✓ worked | — | — | — | `ev:pymupdf4llm·target-2015-annual-report·reading-order-structure` | | Reading order & structure | Scanned Research Paper INT 1983-07 Issue 333 | ✗ failed | — | — | — | `ev:pymupdf4llm·scanned-research-paper-int-1983-07-issue-333·reading-order-structure` | | Reading order & structure | Hybrid Earnings Report | ✓ worked | — | — | — | `ev:pymupdf4llm·hybrid-earnings-report·reading-order-and-structure` | | Reading order & structure | Scanned Research PDF | ✓ worked | — | — | — | `ev:pymupdf4llm·scanned-research-pdf·reading-order-and-structure` | | Reading order & structure | Financial Report | ✓ worked | — | — | — | `ev:pymupdf4llm·financial-report·reading-order-and-structure` | | Reading order & structure | Scanned research paper | ✗ failed | — | — | — | `ev:pymupdf4llm·scanned-research-paper·reading-order-structure` | | Reading order & structure | Image-only scanned research paper | ✗ failed | — | — | — | `ev:pymupdf4llm·image-only-scanned-research-paper·reading-order-structure` | | Reading order & structure | Research Paper INT 1983-07 Issue 333 with OCR text | ✓ worked | — | — | — | `ev:pymupdf4llm·research-paper-int-1983-07-issue-333-with-ocr-text·reading-order-structure` | | Reading order & structure | Research Paper INT 1983-07 Issue 333 as Image-Only Scanned PDF | ✗ failed | — | — | — | `ev:pymupdf4llm·research-paper-int-1983-07-issue-333-as-image-only-scanned-pdf·reading-order-structure` | | Reading Order Preservation | Scanned Research Paper INT 1983-07 Issue 333 (image-only) | ✗ failed | — | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/pymupdf4llm-pymupdf4llm-input3-scannedpaper-multicol-4f3192615e01.png) | `ev:pymupdf4llm·scanned-research-paper-int-1983-07-issue-333-image-only·reading-order-preservation` | | Reading Order Preservation | Sumitomo Heavy Industries consolidated financial report | ✗ failed | — | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/pymupdf4llm-pymupdf4llm-input2-financialpdf-toc-omit-be1a01356126.png) | `ev:pymupdf4llm·sumitomo-heavy-industries-consolidated-financial-report·reading-order-preservation` | | Reading Order Preservation | Target 2015 Annual Report | ✓ worked | — | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/pymupdf4llm-pymupdf4llm-input1-hybridearnings-growth-47c749059bdb.png) | `ev:pymupdf4llm·target-2015-annual-report·reading-order-preservation` | | Reading Order Preservation | Scanned research paper | ⚠ struggled | — | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/pymupdf4llm-pymupdf4llm-input3-scannedpaper-multicol-4c507eec6c7c.png) | `ev:pymupdf4llm·scanned-research-paper·reading-order-preservation` | | Reading Order Preservation | Image-only scanned research paper | ⚠ struggled | — | — | — | `ev:pymupdf4llm·image-only-scanned-research-paper·reading-order-preservation` | | Reading Order Preservation | Scanned research paper (image-only) | ⚠ struggled | — | — | — | `ev:pymupdf4llm·scanned-research-paper-image-only·reading-order-preservation` | | Separate table/chart extraction (bonus) | cross-scenario | ◐ mixed | — | — | — | `ev:pymupdf4llm·cross·separate-table-chart-extraction-bonus` | | Separate table/chart extraction (bonus) | Target 2015 Annual Report | ◐ mixed | — | — | — | `ev:pymupdf4llm·target-2015-annual-report·separate-table-chart-extraction-bonus` | | Separate table/chart extraction (bonus) | Hybrid Earnings Report | ◐ mixed | — | — | — | `ev:pymupdf4llm·hybrid-earnings-report·separate-table-chart-extraction-bonus` | | Table Reconstruction | Sumitomo Heavy Industries consolidated financial report | ✗ failed | — | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/pymupdf4llm-pymupdf4llm-input2-financialpdf-consolid-e4ccf8ce8dd0.png) | `ev:pymupdf4llm·sumitomo-heavy-industries-consolidated-financial-report·table-reconstruction` | | Table Reconstruction | Scanned Research Paper INT 1983-07 Issue 333 (image-only) | ✗ failed | — | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/pymupdf4llm-pymupdf4llm-input3-scannedpaper-table-4--0dce227afe6a.png) | `ev:pymupdf4llm·scanned-research-paper-int-1983-07-issue-333-image-only·table-reconstruction` | | Table Reconstruction | Target 2015 Annual Report | ✓ worked | — | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/pymupdf4llm-pymupdf4llm-input1-hybridearnings-financ-80c05c1cd419.png) | `ev:pymupdf4llm·target-2015-annual-report·table-reconstruction` | | Table Reconstruction | Scanned research paper | ⚠ struggled | — | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/pymupdf4llm-pymupdf4llm-input3-scannedpaper-table-4-171279a1bfc7.png) | `ev:pymupdf4llm·scanned-research-paper·table-reconstruction` | | Table Reconstruction | Image-only scanned research paper | ⚠ struggled | — | — | — | `ev:pymupdf4llm·image-only-scanned-research-paper·table-reconstruction` | | Table Reconstruction | Scanned research paper (image-only) | ⚠ struggled | — | — | — | `ev:pymupdf4llm·scanned-research-paper-image-only·table-reconstruction` | | Table structure preservation | Scanned Research Paper (Image-Only) | ⚠ struggled | — | — | — | `ev:pymupdf4llm·scanned-research-paper-image-only·table-structure-preservation` | | Table structure preservation | Target 2015 Annual Report | ✓ worked | — | — | — | `ev:pymupdf4llm·target-2015-annual-report·table-structure-preservation` | | Table structure preservation | Sumitomo Heavy Industries Consolidated Financial Report | ✗ failed | — | — | — | `ev:pymupdf4llm·sumitomo-heavy-industries-consolidated-financial-report·table-structure-preservation` | | Table structure preservation | Scanned Research Paper INT 1983-07 Issue 333 | ◐ mixed | — | — | — | `ev:pymupdf4llm·scanned-research-paper-int-1983-07-issue-333·table-structure-preservation` | | Table structure preservation | Scanned Research PDF | ✓ worked | — | — | — | `ev:pymupdf4llm·scanned-research-pdf·table-structure-preservation` | | Table structure preservation | Financial Report | ✗ failed | — | — | — | `ev:pymupdf4llm·financial-report·table-structure-preservation` | | Table structure preservation | Hybrid Earnings Report | ✓ worked | — | — | — | `ev:pymupdf4llm·hybrid-earnings-report·table-structure-preservation` | | Table structure preservation | Scanned research paper | ✓ worked | — | — | — | `ev:pymupdf4llm·scanned-research-paper·table-structure-preservation` | | Table structure preservation | Image-only scanned research paper | ✓ worked | — | — | — | `ev:pymupdf4llm·image-only-scanned-research-paper·table-structure-preservation` | | Table structure preservation | Research Paper INT 1983-07 Issue 333 as Image-Only Scanned PDF | ✓ worked | — | — | — | `ev:pymupdf4llm·research-paper-int-1983-07-issue-333-as-image-only-scanned-pdf·table-structure-preservation` | | Table structure preservation | Research Paper INT 1983-07: Iss 333 (image-only scanned PDF) | ◐ mixed | — | — | — | `ev:pymupdf4llm·research-paper-int-1983-07-iss-333-image-only-scanned-pdf·table-structure-preservation` | | Text completeness | Sumitomo Heavy Industries Consolidated Financial Report | ✗ failed | — | — | — | `ev:pymupdf4llm·sumitomo-heavy-industries-consolidated-financial-report·text-completeness` | | Text Preservation | Sumitomo Heavy Industries consolidated financial report | ◐ mixed | — | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/pymupdf4llm-pymupdf4llm-input2-financialpdf-capital--b5c1a3c107a1.png) | `ev:pymupdf4llm·sumitomo-heavy-industries-consolidated-financial-report·text-preservation` | | Text Preservation | Target 2015 Annual Report | ✓ worked | — | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/pymupdf4llm-pymupdf4llm-input1-hybridearnings-growth-47c749059bdb.png) | `ev:pymupdf4llm·target-2015-annual-report·text-preservation` | | Text Preservation | Scanned Research Paper INT 1983-07 Issue 333 (image-only) | ✗ failed | — | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/pymupdf4llm-pymupdf4llm-input3-scannedpaper-title-pa-c8c52b30a799.png) | `ev:pymupdf4llm·scanned-research-paper-int-1983-07-issue-333-image-only·text-preservation` | | Text Preservation | Scanned research paper | ⚠ struggled | — | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/pymupdf4llm-pymupdf4llm-input3-scannedpaper-title-78cfa5935059.png) | `ev:pymupdf4llm·scanned-research-paper·text-preservation` | | Text Preservation | Image-only scanned research paper | ⚠ struggled | — | — | — | `ev:pymupdf4llm·image-only-scanned-research-paper·text-preservation` | | Text Preservation | Scanned research paper (image-only) | ⚠ struggled | — | — | — | `ev:pymupdf4llm·scanned-research-paper-image-only·text-preservation` | > 🧾 = artifact-verified (proof captured) · 👁 = observed (noted, no artifact) · verdicts: worked / mixed / struggled / failed. > **Strong on clean native PDFs, but brittle on scans and dense layouts** > > PyMuPDF4LLM is a solid local parser when the PDF is already clean and native-digital: it preserved prose, hierarchy, and straightforward tables well on the hybrid annual report, and it handled the narrative sections in the other digital report too. But its behavior is sharply bimodal rather than robust — dense financial statements, scanned multi-column pages, charts, and embedded images/logos/signatures all degraded into omissions, garbled picture-text blocks, or fragmented OCR text. For this use case, it is useful only when the source is already well-formed and text-heavy. ## Demo Recording [Video: pymupdf4llm demo recording](https://d3epheqghktydj.cloudfront.net/pymupdf4llm-pymupdf4llm-input2-financialpdf-demo-7284ecd88ff0.mp4) *Video — Walkthrough of PyMuPDF4LLM on the table-heavy financial-report input.* ## Feature-by-Feature Breakdown ### Native Text Extraction **Verdict:** Reliable on clean native-digital prose, but OCR-heavy scanned pages become error-prone. Extracts readable prose from native-digital report pages and keeps it in a coherent reading sequence. It handled the Target growth-story spread and the Sumitomo operating summary cleanly, but the scanned research paper introduced OCR spelling errors and column interleaving. **Input:** > **Image** **Output:** > **Image** **Input:** > **Image** **Output:** > **Image** **Input:** > **Image** **Output:** > **Image** **Bottom line:** Best on clean, native text; not dependable once OCR and multi-column scanning enter the picture. ### Document Structure and Reading-Order Preservation **Verdict:** Section hierarchy holds on straightforward digital pages, but scanned layouts lose heading markup and logical flow. Preserves headings and section nesting on straightforward digital report pages, including business and summary sections. On scanned pages, headings lose markdown-level structure, the Table of Contents can disappear, and multi-column pages no longer read in a clean top-to-bottom order. **Input:** > **Image** **Output:** > **Image** **Input:** > **Image** **Output:** > **Image** **Input:** > **Image** **Output:** ``` The Table of Contents page was omitted from the extraction and replaced by garbled picture-text blocks. ``` **Input:** > **Image** **Output:** > **Image** **Bottom line:** Works well for clean report structure, but scanned headings and TOCs are not preserved reliably. ### Table Reconstruction **Verdict:** Clean native tables can be rebuilt, but dense financial statements and scanned tables break badly. Reconstructs well-structured native-digital tables into readable markdown. The hybrid annual report table came through cleanly, while dense financial statements and scanned tables lost alignment, header associations, or the table itself. **Input:** > **Image** **Output:** > **Image** **Input:** > **Image** **Output:** > **Image** **Input:** > **Image** **Output:** > **Image** **Bottom line:** Good on straightforward native tables, unreliable on dense financial or scanned table layouts. ### Chart and Figure Text Capture **Verdict:** It can mine text from figures, but it does not preserve chart geometry or visual structure. Recovers chart labels, titles, and numbers as OCR text inside picture-text wrappers. On the annual report charts it kept values and labels, while scanned figures degraded into fragmented OCR text blocks. **Input:** > **Image** **Output:** > **Image** **Input:** > **Image** **Output:** > **Image** **Input:** > **Image** **Output:** > **Image** **Bottom line:** Useful if you only need figure text; not a faithful chart reconstruction tool. ### Embedded Image Retention **Verdict:** Standalone visuals are a clear weak spot: they are dropped or turned into OCR text instead of being retained as images. Retains standalone visuals such as portraits, logos, signatures, and header art. The Target CEO photo and signature disappeared, and the Sumitomo and USDA page headers were flattened into garbled repeated OCR text instead of being kept as images. **Input:** > **Image** **Output:** > **Image** **Input:** > **Image** **Output:** > **Image** **Input:** > **Image** **Output:** > **Image** **Input:** > **Image** **Output:** > **Image** **Bottom line:** If visual assets matter, this is not the right parser. ### Caption and Footnote Association **Verdict:** Footnotes stay attached on clean tables, but scanned captions can be absorbed into the wrong block. Keeps footnotes grouped under clean native tables, but scanned figure/table captions can be folded into picture-text blocks or merged directly into table cells. The hybrid annual report preserved the table footnotes cleanly, while the scanned research paper merged the Table 6 caption into the table. **Input:** > **Image** **Output:** > **Image** **Input:** > **Image** **Output:** > **Image** **Bottom line:** Precise on straightforward table footnotes, brittle on scanned captions and caption/table boundaries. ## Pricing Open source, no paid tiers evaluated. | Plan | Price | Notes | | --- | --- | --- | | Open source ★ (tested) | $0 | AGPL open-source library | *The report describes pymupdf4llm as free and open source (AGPL).* ## Is It Right For You? **Use it if** - You are converting clean, native-digital PDFs locally and want usable markdown without a hosted service. - Your priority is readable prose and straightforward tables from well-structured pages. - You can tolerate charts being reduced to OCR text and images being dropped. **Skip it if** - Your PDFs are scanned or OCR-heavy multi-column documents. - You need faithful retention of charts, photos, logos, or signatures. - You rely on dense financial statement tables or validated repeat-run consistency. ## Classification - **Category:** developer-tools - **Subcategory:** documentation-tools - **Type:** text ## Frequently Asked Questions **Q: How well does pymupdf4llm handle clean native-digital PDFs?** Very well in this report. The hybrid annual report's prose, the business section, the growth-story section, and the summary section were extracted cleanly, with readable reading order and preserved structure on the digital pages. **Q: How does pymupdf4llm do on dense financial tables?** Poorly. In the financial-report input, the consolidated and quarterly tables were either omitted or reduced to garbled picture-text fragments, and the structure was not recoverable. **Q: Can pymupdf4llm handle scanned PDFs or OCR-heavy pages?** Not reliably. The scanned research paper showed OCR spelling errors, heavy column interleaving, weak heading parsing, and degraded tables across the document. **Q: What happens to charts and figures?** Their text can survive, but the chart itself is not reconstructed. The annual report charts were reduced to OCR text fragments inside picture-text blocks, and scanned figures degraded into broken text. **Q: Does pymupdf4llm keep images, logos, and signatures?** No. The CEO photo and signature were omitted, and the company header and USDA logo areas were turned into garbled OCR text instead of retained image elements. **Q: Are table footnotes and captions preserved?** Footnotes on clean native tables were preserved and stayed attached below the table, but scanned table captions could be merged into the table extraction instead of remaining separate. **Q: Is pymupdf4llm free, and was repeat-run stability tested?** The report describes it as free/open-source (AGPL). It does not include a repeat-run or matched-layout consistency test, so stability across repeated runs remains unproven.