--- title: "doc2mark" type: "AI Tool" url: "https://aidemos.com/tools/doc2mark" description: "We ran doc2mark on an 84-page hybrid filing and an 18-page report; it kept prose/headings, but tables, charts, images, and scans still broke." category: "developer-tools" website: "https://github.com/luisleo526/doc2mark?via=aidemos" published: "2026-07-21T07:41:11.637865+00:00" updated: "2026-07-21T15:24:53.224850+00:00" evidenceCount: 80 verifiedCount: 0 coverage: "partial" --- # doc2mark Open-source PDF-to-markdown that preserves native text and headings, but still struggles with tables, charts, images, and scans. ## TL;DR Verdict **Good text baseline, weak structure handling** **Where it wins:** - You need an open-source, self-hostable baseline for native-digital PDFs. - Your documents are prose-heavy and section headings matter more than table fidelity. - You can manually clean up tables, charts, and dropped images after conversion. **Main limitation:** You need faithful complex table reconstruction. **Pricing:** Open source $0 `Open source` · `Native text` · `Tables degraded` · `Scans unsupported` **Website:** [Visit doc2mark](https://github.com/luisleo526/doc2mark?via=aidemos) ## Evidence (first-party, tested) *80 tested cells · 0/80 artifact-verified. Scores are out of 5. Cite a cell by its Evidence ID, e.g. `ev:doc2mark·cross·bonus-unique-or-anomalous-behaviors`.* | Criterion | Scenario | Verdict | Score | Tested | Proof | Evidence ID | | --- | --- | --- | --- | --- | --- | --- | | Bonus: Unique or Anomalous Behaviors | cross-scenario | ⚠ struggled | — | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/doc2mark-doc2mark-input1-hybridearnings-financial-c220a901c5d4.png) | `ev:doc2mark·cross·bonus-unique-or-anomalous-behaviors` | | Bonus: Unique or Anomalous Behaviors | Scanned research paper | ◐ mixed | — | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/doc2mark-doc2mark-input3-scannedpaper-output-8e732aee85e6.md) | `ev:doc2mark·scanned-research-paper·bonus-unique-or-anomalous-behaviors` | | Bonus: Unique or Anomalous Behaviors | Target 2015 annual report | ⚠ struggled | — | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/doc2mark-doc2mark-input1-hybridearnings-output-74fb906e225f.md) | `ev:doc2mark·target-2015-annual-report·bonus-unique-or-anomalous-behaviors` | | Bonus: Unique or Anomalous Behaviors | Sumitomo Heavy Industries consolidated financial report | ◐ mixed | — | — | — | `ev:doc2mark·sumitomo-heavy-industries-consolidated-financial-report·bonus-unique-or-anomalous-behaviors` | | Bonus: Unique or Anomalous Behaviors | Scanned research paper (image-only) | ✗ failed | — | — | — | `ev:doc2mark·scanned-research-paper-image-only·bonus-unique-or-anomalous-behaviors` | | Caption/Figure Association | Target 2015 Annual Report | ✗ failed | — | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/doc2mark-doc2mark-input1-hybridearnings-footnotes-854f2847c018.png) | `ev:doc2mark·target-2015-annual-report·caption-figure-association` | | Caption/Figure Association | Scanned research paper | ✗ failed | — | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/doc2mark-doc2mark-input3-scannedpaper-output-8e732aee85e6.md) | `ev:doc2mark·scanned-research-paper·caption-figure-association` | | Caption/Figure Association | Sumitomo Heavy Industries consolidated financial report | ◐ mixed | — | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/doc2mark-doc2mark-input2-financialpdf-corporate-i-301fb7db68cf.png) | `ev:doc2mark·sumitomo-heavy-industries-consolidated-financial-report·caption-figure-association` | | Caption/Figure Association | Image-only scanned research paper | ✗ failed | — | — | — | `ev:doc2mark·image-only-scanned-research-paper·caption-figure-association` | | Caption/Figure Association | Scanned research paper (image-only) | ✗ failed | — | — | — | `ev:doc2mark·scanned-research-paper-image-only·caption-figure-association` | | Chart Reconstruction | Target 2015 Annual Report | ✗ failed | — | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/doc2mark-doc2mark-input1-hybridearnings-financial-b1c17d714075.png) | `ev:doc2mark·target-2015-annual-report·chart-reconstruction` | | Chart Reconstruction | Sumitomo Heavy Industries consolidated financial report | ◐ mixed | — | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/doc2mark-doc2mark-input2-financialpdf-corporate-i-301fb7db68cf.png) | `ev:doc2mark·sumitomo-heavy-industries-consolidated-financial-report·chart-reconstruction` | | Chart Reconstruction | Scanned research paper | ✗ failed | — | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/doc2mark-doc2mark-input3-scannedpaper-output-8e732aee85e6.md) | `ev:doc2mark·scanned-research-paper·chart-reconstruction` | | Chart Reconstruction | Image-only scanned research paper | ✗ failed | — | — | — | `ev:doc2mark·image-only-scanned-research-paper·chart-reconstruction` | | Chart Reconstruction | Scanned research paper (image-only) | ✗ failed | — | — | — | `ev:doc2mark·scanned-research-paper-image-only·chart-reconstruction` | | Chart retention | Target 2015 Annual Report | ✗ failed | — | — | — | `ev:doc2mark·target-2015-annual-report·chart-retention` | | Chart retention | Hybrid Earnings Report | ✗ failed | — | — | — | `ev:doc2mark·hybrid-earnings-report·chart-retention` | | Configurability | cross-scenario | ✓ worked | — | — | — | `ev:doc2mark·cross·configurability` | | Document Hierarchy | Sumitomo Heavy Industries consolidated financial report | ⚠ struggled | — | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/doc2mark-doc2mark-input2-financialpdf-changes-hea-158cb7fd197a.png) | `ev:doc2mark·sumitomo-heavy-industries-consolidated-financial-report·document-hierarchy` | | Document Hierarchy | Target 2015 Annual Report | ✓ worked | — | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/doc2mark-doc2mark-input1-hybridearnings-item-1-he-38ddac99277d.png) | `ev:doc2mark·target-2015-annual-report·document-hierarchy` | | Document Hierarchy | Scanned research paper | ✗ failed | — | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/doc2mark-doc2mark-input3-scannedpaper-output-8e732aee85e6.md) | `ev:doc2mark·scanned-research-paper·document-hierarchy` | | Document Hierarchy | Image-only scanned research paper | ✗ failed | — | — | — | `ev:doc2mark·image-only-scanned-research-paper·document-hierarchy` | | Document Hierarchy | Scanned research paper (image-only) | ✗ failed | — | — | — | `ev:doc2mark·scanned-research-paper-image-only·document-hierarchy` | | Ease of deployment and maintenance | cross-scenario | ◐ mixed | — | — | — | `ev:doc2mark·cross·ease-of-deployment-and-maintenance` | | Image retention | Hybrid Earnings Report | ✗ failed | — | — | — | `ev:doc2mark·hybrid-earnings-report·image-retention` | | Image Retention | Target 2015 Annual Report | ✗ failed | — | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/doc2mark-doc2mark-input1-hybridearnings-logo-pars-0a86f806447d.png) | `ev:doc2mark·target-2015-annual-report·image-retention` | | Image Retention | Sumitomo Heavy Industries consolidated financial report | ◐ mixed | — | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/doc2mark-doc2mark-input2-financialpdf-corporate-i-301fb7db68cf.png) | `ev:doc2mark·sumitomo-heavy-industries-consolidated-financial-report·image-retention` | | Image Retention | Scanned research paper | ✗ failed | — | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/doc2mark-doc2mark-input3-scannedpaper-output-8e732aee85e6.md) | `ev:doc2mark·scanned-research-paper·image-retention` | | Image Retention | Image-only scanned research paper | ✗ failed | — | — | — | `ev:doc2mark·image-only-scanned-research-paper·image-retention` | | Image Retention | Scanned research paper (image-only) | ✗ failed | — | — | — | `ev:doc2mark·scanned-research-paper-image-only·image-retention` | | Long/Complex Document Robustness | cross-scenario | ◐ mixed | — | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/doc2mark-doc2mark-input1-hybridearnings-output-74fb906e225f.md) | `ev:doc2mark·cross·long-complex-document-robustness` | | Long/Complex Document Robustness | Sumitomo Heavy Industries consolidated financial report | ⚠ struggled | — | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/doc2mark-doc2mark-input2-financialpdf-corporate-i-301fb7db68cf.png) | `ev:doc2mark·sumitomo-heavy-industries-consolidated-financial-report·long-complex-document-robustness` | | Long/Complex Document Robustness | Target 2015 annual report | ✓ worked | — | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/doc2mark-doc2mark-input1-hybridearnings-financial-e9fa1da2c709.png) | `ev:doc2mark·target-2015-annual-report·long-complex-document-robustness` | | Long/Complex Document Robustness | Scanned research paper | ✗ failed | — | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/doc2mark-doc2mark-input3-scannedpaper-output-8e732aee85e6.md) | `ev:doc2mark·scanned-research-paper·long-complex-document-robustness` | | Long/Complex Document Robustness | Image-only scanned research paper | ✗ failed | — | — | — | `ev:doc2mark·image-only-scanned-research-paper·long-complex-document-robustness` | | Long/Complex Document Robustness | Scanned research paper (image-only) | ✗ failed | — | — | — | `ev:doc2mark·scanned-research-paper-image-only·long-complex-document-robustness` | | Markdown cleanliness | cross-scenario | ✓ worked | — | — | — | `ev:doc2mark·cross·markdown-cleanliness` | | OCR quality on scans | Research Paper INT 1983-07 Issue 333 as Image-Only Scanned PDF | ✗ failed | — | — | — | `ev:doc2mark·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:doc2mark·research-paper-int-1983-07-iss-333-image-only-scanned-pdf·ocr-quality-on-scans` | | OCR quality on scans | Scanned research paper without OCR text | ✗ failed | — | — | — | `ev:doc2mark·scanned-research-paper-without-ocr-text·ocr-quality-on-scans` | | OCR quality on scans | Scanned research paper INT 1983-07 issue 333 | ✗ failed | — | — | — | `ev:doc2mark·scanned-research-paper-int-1983-07-issue-333·ocr-quality-on-scans` | | Performance and resource usage | cross-scenario | ◐ mixed | — | — | — | `ev:doc2mark·cross·performance-and-resource-usage` | | Performance and resource usage | Sumitomo Heavy Industries consolidated financial report | ✓ worked | — | — | — | `ev:doc2mark·sumitomo-heavy-industries-consolidated-financial-report·performance-and-resource-usage` | | Performance and resource usage | Target 2015 Annual Report | ✓ worked | — | — | — | `ev:doc2mark·target-2015-annual-report·performance-and-resource-usage` | | Reading order & structure | Target 2015 Annual Report | ✓ worked | — | — | — | `ev:doc2mark·target-2015-annual-report·reading-order-structure` | | Reading order & structure | Sumitomo Heavy Industries Consolidated Financial Report | ✓ worked | — | — | — | `ev:doc2mark·sumitomo-heavy-industries-consolidated-financial-report·reading-order-structure` | | Reading order & structure | Financial Report | ✓ worked | — | — | — | `ev:doc2mark·financial-report·reading-order-and-structure` | | Reading order & structure | Hybrid Earnings Report | ✗ failed | — | — | — | `ev:doc2mark·hybrid-earnings-report·reading-order-and-structure` | | Reading order & structure | Sumitomo Heavy Industries consolidated financial report | ✓ worked | — | — | — | `ev:doc2mark·sumitomo-heavy-industries-consolidated-financial-report·reading-order-and-structure` | | Reading order & structure | Target 2015 Annual Report | ◐ mixed | — | — | — | `ev:doc2mark·target-2015-annual-report·reading-order-and-structure` | | Reading Order Preservation | Target 2015 Annual Report | ✗ failed | — | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/doc2mark-doc2mark-input1-hybridearnings-growth-se-bb3d65c0896b.png) | `ev:doc2mark·target-2015-annual-report·reading-order-preservation` | | Reading Order Preservation | Sumitomo Heavy Industries consolidated financial report | ✓ worked | — | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/doc2mark-doc2mark-input2-financialpdf-toc-parsed--acf5cca54e00.png) | `ev:doc2mark·sumitomo-heavy-industries-consolidated-financial-report·reading-order-preservation` | | Reading Order Preservation | Scanned research paper | ✗ failed | — | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/doc2mark-doc2mark-input3-scannedpaper-output-8e732aee85e6.md) | `ev:doc2mark·scanned-research-paper·reading-order-preservation` | | Reading Order Preservation | Image-only scanned research paper | ✗ failed | — | — | — | `ev:doc2mark·image-only-scanned-research-paper·reading-order-preservation` | | Reading Order Preservation | Scanned research paper (image-only) | ✗ failed | — | — | — | `ev:doc2mark·scanned-research-paper-image-only·reading-order-preservation` | | Table Reconstruction | Sumitomo Heavy Industries consolidated financial report | ✗ failed | — | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/doc2mark-doc2mark-input2-financialpdf-business-re-0edbde7b34e7.png) | `ev:doc2mark·sumitomo-heavy-industries-consolidated-financial-report·table-reconstruction` | | Table Reconstruction | Target 2015 Annual Report | ✗ failed | — | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/doc2mark-doc2mark-input1-hybridearnings-financial-2c77c1292340.png) | `ev:doc2mark·target-2015-annual-report·table-reconstruction` | | Table Reconstruction | Scanned research paper | ✗ failed | — | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/doc2mark-doc2mark-input3-scannedpaper-output-8e732aee85e6.md) | `ev:doc2mark·scanned-research-paper·table-reconstruction` | | Table Reconstruction | Image-only scanned research paper | ✗ failed | — | — | — | `ev:doc2mark·image-only-scanned-research-paper·table-reconstruction` | | Table Reconstruction | Scanned research paper (image-only) | ✗ failed | — | — | — | `ev:doc2mark·scanned-research-paper-image-only·table-reconstruction` | | Table structure preservation | Target 2015 Annual Report | ✗ failed | — | — | — | `ev:doc2mark·target-2015-annual-report·table-structure-preservation` | | Table structure preservation | Sumitomo Heavy Industries Consolidated Financial Report | ✗ failed | — | — | — | `ev:doc2mark·sumitomo-heavy-industries-consolidated-financial-report·table-structure-preservation` | | Table structure preservation | Financial Report | ✗ failed | — | — | — | `ev:doc2mark·financial-report·table-structure-preservation` | | Table structure preservation | Hybrid Earnings Report | ✗ failed | — | — | — | `ev:doc2mark·hybrid-earnings-report·table-structure-preservation` | | Text completeness | Scanned Research Paper (Image-Only) | ✗ failed | — | — | — | `ev:doc2mark·scanned-research-paper-image-only·text-completeness` | | Text completeness | Scanned Research Paper INT 1983-07 Issue 333 | ✗ failed | — | — | — | `ev:doc2mark·scanned-research-paper-int-1983-07-issue-333·text-completeness` | | Text completeness | Scanned Research PDF | ✗ failed | — | — | — | `ev:doc2mark·scanned-research-pdf·text-completeness` | | Text completeness | Scanned research paper | ✗ failed | — | — | — | `ev:doc2mark·scanned-research-paper·text-completeness` | | Text completeness | Image-only scanned research paper | ✗ failed | — | — | — | `ev:doc2mark·image-only-scanned-research-paper·text-completeness` | | Text completeness | Research Paper INT 1983-07 Issue 333 as Image-Only Scanned PDF | ✗ failed | — | — | — | `ev:doc2mark·research-paper-int-1983-07-issue-333-as-image-only-scanned-pdf·text-completeness` | | Text completeness | Research Paper INT 1983-07: Iss 333 (image-only scanned PDF) | ✗ failed | — | — | — | `ev:doc2mark·research-paper-int-1983-07-iss-333-image-only-scanned-pdf·text-completeness` | | Text completeness | Scanned research paper without OCR text | ✗ failed | — | — | — | `ev:doc2mark·scanned-research-paper-without-ocr-text·text-completeness` | | Text completeness | Research Paper INT 1983-07 Issue 333 (scanned image-only PDF) | ✗ failed | — | — | — | `ev:doc2mark·research-paper-int-1983-07-issue-333-scanned-image-only-pdf·text-completeness` | | Text completeness | Research Paper INT 1983-07 issue 333 image-only scanned PDF | ✗ failed | — | — | — | `ev:doc2mark·research-paper-int-1983-07-issue-333-image-only-scanned-pdf·text-completeness` | | Text Preservation | Scanned Research Paper INT 1983-07 Issue 333 (image-only) | ✗ failed | — | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/doc2mark-doc2mark-input3-scannedpaper-output-8e732aee85e6.md) | `ev:doc2mark·scanned-research-paper-int-1983-07-issue-333-image-only·text-preservation` | | Text Preservation | Sumitomo Heavy Industries consolidated financial report | ✓ worked | — | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/doc2mark-doc2mark-input2-financialpdf-disclaimer--a898e3623ccd.png) | `ev:doc2mark·sumitomo-heavy-industries-consolidated-financial-report·text-preservation` | | Text Preservation | Target 2015 Annual Report | ✓ worked | — | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/doc2mark-doc2mark-input1-hybridearnings-general-s-f33dbe725785.png) | `ev:doc2mark·target-2015-annual-report·text-preservation` | | Text Preservation | Scanned research paper | ✗ failed | — | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/doc2mark-doc2mark-input3-scannedpaper-output-8e732aee85e6.md) | `ev:doc2mark·scanned-research-paper·text-preservation` | | Text Preservation | Image-only scanned research paper | ✗ failed | — | — | — | `ev:doc2mark·image-only-scanned-research-paper·text-preservation` | | Text Preservation | Scanned research paper (image-only) | ✗ failed | — | — | — | `ev:doc2mark·scanned-research-paper-image-only·text-preservation` | > 🧾 = artifact-verified (proof captured) · 👁 = observed (noted, no artifact) · verdicts: worked / mixed / struggled / failed. > **Good text baseline, weak structure handling** > > doc2mark is a solid open-source baseline for native-digital PDFs: it reliably extracts prose and major headings from long reports, including the 84-page hybrid filing and the 18-page financial report. But the tested outputs still break dense tables, fragment charts, drop images and signatures, jumble multi-column reading order, and fail outright on scans unless you add an external OCR/API path. ## Demo Recording [Video: doc2mark demo recording](https://d3epheqghktydj.cloudfront.net/doc2mark-doc2mark-input2-financialpdf-demo-c7f22731a09c.mp4) *Video — Walkthrough of doc2mark on the table-heavy financial-report input.* ## Feature-by-Feature Breakdown ### PDF-to-Markdown Conversion **Verdict:** Weak Converts digitally born and scanned PDF documents into extractable markdown/text, as exercised on the Target annual report, Japanese quarterly report, hybrid earnings report, multi-column spread, the A Growth Story Again page, and a scanned research paper. The proof points cover native text, reading order, tables, charts, embedded images, footnotes, and long-document completion. **Input:** > **Image** **Output:** > **Image** **Input:** > **Image** **Output:** > **Image** **Input:** > **Image** **Output:** > **Image** **Input:** > **Image** **Output:** > **Image** **Input:** > **Image** **Output:** > **Image** **Input:** > **Image** **Output:** > **Image** **Input:** > **Image** **Output:** > **Image** **Input:** > **Image** **Output:** > **Image** **Input:** > **Image** **Output:** > **Image** **Input:** > **Image** **Output:** > **Image** **Input:** > **Image** **Output:** > **Image** **Input:** > **Image** **Output:** > **Image** **Input:** > **Image** **Output:** > **Image** **Input:** > **Image** **Output:** > **Image** **Input:** > **File** **Output:** > **File** **Input:** > **Pdf** **Output:** > **Markdown** **Input:** > **Pdf** **Output:** > **Markdown** **Bottom line:** The footnotes survive as text, but they are no longer tightly linked to the table they explain. ## Pricing Free and open source | Plan | Price | Notes | | --- | --- | --- | | Open source ★ | $0 | MIT-licensed | *The report describes doc2mark as MIT-licensed and free.* ## Is It Right For You? **Use it if** - You need an open-source, self-hostable baseline for native-digital PDFs. - Your documents are prose-heavy and section headings matter more than table fidelity. - You can manually clean up tables, charts, and dropped images after conversion. - You want long reports processed without truncation or crashes. **Skip it if** - You need faithful complex table reconstruction. - You need charts, logos, figures, or signatures to survive conversion. - You need built-in OCR for scanned PDFs. - You need stable markdown-only table output. - You need reliable reading order in multi-column pages. ## Classification - **Category:** developer-tools - **Subcategory:** documentation-tools - **Type:** text ## Frequently Asked Questions **Q: Does doc2mark preserve native text and headings?** Yes for native-digital text. The Target business section and the Japanese disclaimer were extracted, and major section breaks were often recognizable, but minor headers could still be formatted inconsistently. **Q: How reliable are tables in doc2mark?** Not reliable for dense tables. The annual-report tables and quarterly business results lost row and column structure; some simpler tables came out as markdown or HTML, but the syntax changed across pages. **Q: Does doc2mark keep charts?** No. The four-panel financial highlights chart was split into labels, numbers, and a broken table, so the trend data was not recoverable. **Q: Does doc2mark retain logos or signatures?** No. The cover logo and the CEO signature were dropped or reduced to text, with no image placeholders. **Q: Can doc2mark OCR scanned PDFs?** Not in this open-source-only benchmark. The scanned paper produced a 0-byte markdown file, and the report says OCR needs an external OpenAI API integration. **Q: Does doc2mark preserve reading order in multi-column pages?** Only partially. Single-column text and the table of contents stayed readable, but the two-column 'A Growth Story Again' page was interleaved and jumbled. **Q: Is doc2mark free to use?** The report describes it as open source (MIT) and lists it as free / $0. ## Similar Tools AI tools similar to doc2mark: - [pymupdf4llm](https://aidemos.com/tools/pymupdf4llm) — Open-source PDF-to-markdown for clean native PDFs, but unreliable on scans, dense tables, and images.