
doc2mark
Open-source PDF-to-markdown that preserves native text and headings, but still struggles with tables, charts, images, and scans.
Good text baseline, weak structure handling
- 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 need faithful complex table reconstruction.
Our take
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.
In-Depth Review
Our detailed analysis of doc2mark — features, performance, and real-world testing.
Feature-by-Feature Breakdown
PDF-to-Markdown ConversionWeak▾
Feature tested: PDF-to-Markdown Conversion
Result: Failed
Verdict: Weak
Expected behavior: 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.
Test case: Image → Image
Input type: Image
Input used: Input artifact (Image): Input — doc2mark-doc2mark-input1-hybridearnings-item-1-he-38ddac99277d.png
Observed output: Output artifact (Image): The full business paragraph survived, including the Target Corporation description and credit-card segment history. — doc2mark_input1_hybridearnings_general_section_parsed_failed.png
Input artifact: Input artifact (Image): Input — doc2mark-doc2mark-input1-hybridearnings-item-1-he-38ddac99277d.png
Output artifact: Output artifact (Image): The full business paragraph survived, including the Target Corporation description and credit-card segment history. — doc2mark_input1_hybridearnings_general_section_parsed_failed.png
What changed: Image transformed into Image
Test case: Image → Text/code file
Input type: Image
Input used: Input artifact (Image): Input — doc2mark_input2_financialpdf_disclaimer_text.png
Observed output: Output artifact (Text/code file): The disclaimer paragraph was fully preserved, including the Japanese GAAP note, translation note, forward-looking caveat, and rounding convention. — doc2mark-doc2mark-input2-financialpdf-output-64777dd9b209.md
Input artifact: Input artifact (Image): Input — doc2mark_input2_financialpdf_disclaimer_text.png
Output artifact: Output artifact (Text/code file): The disclaimer paragraph was fully preserved, including the Japanese GAAP note, translation note, forward-looking caveat, and rounding convention. — doc2mark-doc2mark-input2-financialpdf-output-64777dd9b209.md
What changed: Image transformed into Text/code file
Test case: Image → Text/code file
Input type: Image
Input used: Input artifact (Image): Input — doc2mark_input1_hybridearnings_item_1_section.png
Observed output: Output artifact (Text/code file): The Item 1 / Business heading was recognized as a Markdown-style header before the section text continued. — doc2mark-doc2mark-input1-hybridearnings-output-74fb906e225f.md
Input artifact: Input artifact (Image): Input — doc2mark_input1_hybridearnings_item_1_section.png
Output artifact: Output artifact (Text/code file): The Item 1 / Business heading was recognized as a Markdown-style header before the section text continued. — doc2mark-doc2mark-input1-hybridearnings-output-74fb906e225f.md
What changed: Image transformed into Text/code file
Test case: Image → Text/code file
Input type: Image
Input used: Input artifact (Image): Japanese report section headed Changes to Accounting Policies. — doc2mark_input2_financialpdf_changes_header.png
Observed output: Output artifact (Text/code file): The section title is present, but the heading formatting is inconsistent rather than cleanly normalized. — doc2mark-doc2mark-input2-financialpdf-output-64777dd9b209.md
Input artifact: Input artifact (Image): Japanese report section headed Changes to Accounting Policies. — doc2mark_input2_financialpdf_changes_header.png
Output artifact: Output artifact (Text/code file): The section title is present, but the heading formatting is inconsistent rather than cleanly normalized. — doc2mark-doc2mark-input2-financialpdf-output-64777dd9b209.md
What changed: Image transformed into Text/code file
Test case: Image → Text/code file
Input type: Image
Input used: Input artifact (Image): Input — doc2mark_input2_financialpdf_toc.png
Observed output: Output artifact (Text/code file): The table of contents kept its section ordering and hierarchy, showing that simple linear pages can stay in sequence. — doc2mark-doc2mark-input2-financialpdf-output-64777dd9b209.md
Input artifact: Input artifact (Image): Input — doc2mark_input2_financialpdf_toc.png
Output artifact: Output artifact (Text/code file): The table of contents kept its section ordering and hierarchy, showing that simple linear pages can stay in sequence. — doc2mark-doc2mark-input2-financialpdf-output-64777dd9b209.md
What changed: Image transformed into Text/code file
Test case: Image → Text/code file
Input type: Image
Input used: Input artifact (Image): Input — doc2mark_input1_hybridearnings_financial_table.png
Observed output: Output artifact (Text/code file): The annual-report financial summary was flattened into plain text with row-to-column mapping damaged. — doc2mark-doc2mark-input1-hybridearnings-output-74fb906e225f.md
Input artifact: Input artifact (Image): Input — doc2mark_input1_hybridearnings_financial_table.png
Output artifact: Output artifact (Text/code file): The annual-report financial summary was flattened into plain text with row-to-column mapping damaged. — doc2mark-doc2mark-input1-hybridearnings-output-74fb906e225f.md
What changed: Image transformed into Text/code file
Test case: Image → Text/code file
Input type: Image
Input used: Input artifact (Image): Input — doc2mark_input2_financialpdf_business_results_table.png
Observed output: Output artifact (Text/code file): The quarterly business-results table merged the numeric columns into the first cell, breaking the row-to-column mapping. — doc2mark-doc2mark-input2-financialpdf-output-64777dd9b209.md
Input artifact: Input artifact (Image): Input — doc2mark_input2_financialpdf_business_results_table.png
Output artifact: Output artifact (Text/code file): The quarterly business-results table merged the numeric columns into the first cell, breaking the row-to-column mapping. — doc2mark-doc2mark-input2-financialpdf-output-64777dd9b209.md
What changed: Image transformed into Text/code file
Test case: Image → Text/code file
Input type: Image
Input used: Input artifact (Image): Input — doc2mark_input2_financialpdf_corporate_info_table_bonus_criterion.png
Observed output: Output artifact (Text/code file): A simple corporate-info table was emitted as Markdown, showing that the output syntax changes from table to table. — doc2mark-doc2mark-input2-financialpdf-output-64777dd9b209.md
Input artifact: Input artifact (Image): Input — doc2mark_input2_financialpdf_corporate_info_table_bonus_criterion.png
Output artifact: Output artifact (Text/code file): A simple corporate-info table was emitted as Markdown, showing that the output syntax changes from table to table. — doc2mark-doc2mark-input2-financialpdf-output-64777dd9b209.md
What changed: Image transformed into Text/code file
Test case: Image → Text/code file
Input type: Image
Input used: Input artifact (Image): Input — doc2mark_input2_financialpdf_quarterly_table_bonus_criterion.png
Observed output: Output artifact (Text/code file): Another table from the same document was emitted as HTML, confirming inconsistent table syntax across pages. — doc2mark-doc2mark-input2-financialpdf-output-64777dd9b209.md
Input artifact: Input artifact (Image): Input — doc2mark_input2_financialpdf_quarterly_table_bonus_criterion.png
Output artifact: Output artifact (Text/code file): Another table from the same document was emitted as HTML, confirming inconsistent table syntax across pages. — doc2mark-doc2mark-input2-financialpdf-output-64777dd9b209.md
What changed: Image transformed into Text/code file
Test case: Image → Text/code file
Input type: Image
Input used: Input artifact (Image): Input — doc2mark_input1_hybridearnings_financial_charts.png
Observed output: Output artifact (Text/code file): The four chart panels were fragmented into labels, scattered values, and a broken HTML table, making the trend data unusable. — doc2mark-doc2mark-input1-hybridearnings-output-74fb906e225f.md
Input artifact: Input artifact (Image): Input — doc2mark_input1_hybridearnings_financial_charts.png
Output artifact: Output artifact (Text/code file): The four chart panels were fragmented into labels, scattered values, and a broken HTML table, making the trend data unusable. — doc2mark-doc2mark-input1-hybridearnings-output-74fb906e225f.md
What changed: Image transformed into Text/code file
Test case: Image → Text/code file
Input type: Image
Input used: Input artifact (Image): Input — doc2mark_input1_hybridearnings_logo.png
Observed output: Output artifact (Text/code file): The Target logo was dropped; only the report title text remained. — doc2mark-doc2mark-input1-hybridearnings-output-74fb906e225f.md
Input artifact: Input artifact (Image): Input — doc2mark_input1_hybridearnings_logo.png
Output artifact: Output artifact (Text/code file): The Target logo was dropped; only the report title text remained. — doc2mark-doc2mark-input1-hybridearnings-output-74fb906e225f.md
What changed: Image transformed into Text/code file
Test case: Image → Text/code file
Input type: Image
Input used: Input artifact (Image): Input — doc2mark_input1_hybridearnings_ceo_sign.png
Observed output: Output artifact (Text/code file): The handwritten signature image was omitted, leaving only the printed Brian Cornell signature line. — doc2mark-doc2mark-input1-hybridearnings-output-74fb906e225f.md
Input artifact: Input artifact (Image): Input — doc2mark_input1_hybridearnings_ceo_sign.png
Output artifact: Output artifact (Text/code file): The handwritten signature image was omitted, leaving only the printed Brian Cornell signature line. — doc2mark-doc2mark-input1-hybridearnings-output-74fb906e225f.md
What changed: Image transformed into Text/code file
Test case: Image → Image
Input type: Image
Input used: Input artifact (Image): Input — doc2mark_input1_hybridearnings_growth_section.png
Observed output: Output artifact (Image): The multi-column growth page was flattened into interleaved paragraphs and bullets, so the intended column reading order was broken. — doc2mark_input1_hybridearnings_growth_section_parsed_failed.png
Input artifact: Input artifact (Image): Input — doc2mark_input1_hybridearnings_growth_section.png
Output artifact: Output artifact (Image): The multi-column growth page was flattened into interleaved paragraphs and bullets, so the intended column reading order was broken. — doc2mark_input1_hybridearnings_growth_section_parsed_failed.png
What changed: Image transformed into Image
Test case: Image → Image
Input type: Image
Input used: Input artifact (Image): Input — doc2mark_input1_hybridearnings_footnotes.png
Observed output: Output artifact (Image): The table footnotes were extracted as a separate block of condensed text rather than staying attached to the table. — doc2mark_input1_hybridearnings_footnotes_parsed_failed.png
Input artifact: Input artifact (Image): Input — doc2mark_input1_hybridearnings_footnotes.png
Output artifact: Output artifact (Image): The table footnotes were extracted as a separate block of condensed text rather than staying attached to the table. — doc2mark_input1_hybridearnings_footnotes_parsed_failed.png
What changed: Image transformed into Image
Test case: PDF document → Text/code file
Input type: PDF document
Input used: Input artifact (PDF document): Scanned research paper used as the OCR test case. — input3_scannedpaper.pdf
Observed output: Output artifact (Text/code file): No markdown output was produced; the result file is 0 bytes, so the scanned document path is not usable in this open-source-only setup. — doc2mark_input3_scannedpaper_output.md
Input artifact: Input artifact (PDF document): Scanned research paper used as the OCR test case. — input3_scannedpaper.pdf
Output artifact: Output artifact (Text/code file): No markdown output was produced; the result file is 0 bytes, so the scanned document path is not usable in this open-source-only setup. — doc2mark_input3_scannedpaper_output.md
What changed: PDF document transformed into Text/code file
Test case: PDF document → Text/code file
Input type: PDF document
Input used: Input artifact (PDF document): Input — input1_hybridearnings.pdf
Observed output: Output artifact (Text/code file): The 84-page hybrid earnings report completed in 29 seconds without truncation or a crash, although formatting errors persisted throughout the file. — doc2mark_input1_hybridearnings_output.md
Input artifact: Input artifact (PDF document): Input — input1_hybridearnings.pdf
Output artifact: Output artifact (Text/code file): The 84-page hybrid earnings report completed in 29 seconds without truncation or a crash, although formatting errors persisted throughout the file. — doc2mark_input1_hybridearnings_output.md
What changed: PDF document transformed into Text/code file
Test case: PDF document → Text/code file
Input type: PDF document
Input used: Input artifact (PDF document): Input — input2_financialpdf.pdf
Observed output: Output artifact (Text/code file): The 18-page financial report completed in 15 seconds with complete text extraction, but table formatting stayed inconsistent. — doc2mark_input2_financialpdf_output.md
Input artifact: Input artifact (PDF document): Input — input2_financialpdf.pdf
Output artifact: Output artifact (Text/code file): The 18-page financial report completed in 15 seconds with complete text extraction, but table formatting stayed inconsistent. — doc2mark_input2_financialpdf_output.md
What changed: PDF document transformed into Text/code file
Why it matters / Conclusion: The footnotes survive as text, but they are no longer tightly linked to the table they explain.
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.

















How it scored on the research's own criteria
The 9 evaluation dimensions from our hands-on research on doc2mark, each judged from recorded runs on 3 test inputs — the same verdicts the ranking page ranks on.
held up partial failed not exercised by this input
| Criterion | Verdict | What the runs showed | Per input | Proof |
|---|---|---|---|---|
| Bonus: Unique or Anomalous Behaviors | Weak2/5 | It has a distinctive habit of switching table formats within the same report, which makes downstream handling awkward. | open proof ↗ | |
| Caption/Figure Association | Weak1/5 | Footnotes drift away from their table, so notes are no longer clearly tied to the numbers they explain. | open proof ↗ | |
| Chart Reconstruction | Weak1/5 | The one chart-heavy page turns into fragments instead of usable chart values, so the tool does not reconstruct charts in practice. | open proof ↗ | |
| Document Hierarchy | Strong4/5 | It usually keeps major headings usable, but it sometimes falls back to styling instead of clean heading levels. | open proof ↗ | |
| Image Retention | Weak1/5 | It drops embedded visuals like the cover logo and signature block completely, leaving no stand-in for them. | open proof ↗ | |
| Long/Complex Document Robustness | Mixed3/5 | It finishes long reports without crashing or chopping off the end, but the output quality stays uneven throughout rather than holding steady. | open proof ↗ | |
| Reading Order Preservation | Mixed3/5 | It can keep simple sequences like a table of contents in order, but multi-column prose gets jumbled, so the result is only partly reliable. | open proof ↗ | |
| Table Reconstruction | Weak1/5 | It repeatedly breaks tables into plain text or merged cells, so row and column relationships are not dependable. | open proof ↗ | |
| Text Preservation | Mixed3/5 | It keeps native text very well, but one scanned report comes back empty, so text handling is strong only when OCR is not needed. | open proof ↗ |
Verdicts come verbatim from the study's recorded observations, never re-derived at render; a criterion with no recorded run shows Not exercised — this section cannot invent a score.
Pricing
Free and open source
The report describes doc2mark as MIT-licensed and free.
Featured in Rankings
Independent rankings where doc2mark was tested and rated.
Banner Preview
How the embed badge will look on your site

Embed HTML
Copy this code to your website source
Quick Integration Guide
- 1Copy the HTML code block above.
- 2Paste it into your site's HTML or CMS editor.
- 3Banner appears instantly on your page.
- 4Links back to your tool profile here.
Similar Tools
Discover more AI tools like doc2mark to enhance your workflow.
Comments (0)
Need a custom AI solution for this use case?
If you are looking to build a custom PDF-to-markdown conversion, document parsing, or text extraction system for your business or internal workflow, email us at contact@futuresmart.ai.
Found something inaccurate or missing? We try to keep our AI research accurate and useful. If you found outdated information, an issue, or have a suggestion, email us at collaborate@aidemos.com.