doc2mark icon
developer-tools

doc2mark

Open-source PDF-to-markdown that preserves native text and headings, but still struggles with tables, charts, images, and scans.

Visit doc2mark
Open sourceNative textTables degradedScans unsupported
TL;DR — our verdictUpdated July 2026 · 17 test artifacts

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 (verified plans)
Open source $0
Strongest test artifacts

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.

Walkthrough of doc2mark on the table-heavy financial-report input.

In-Depth Review

Our detailed analysis of doc2mark — features, performance, and real-world testing.

AD
AI Demos Team
Expert Reviewer
Verified Review

Feature-by-Feature Breakdown

PDF-to-Markdown Conversion
Weak
Test Summary
Feature tested: PDF-to-Markdown Conversion
Result: Failed — Weak

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_input1_hybridearnings_general_section.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_input1_hybridearnings_general_section.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 → Image

Input type: Image

Input used: Input artifact (Image): Input — doc2mark_input2_financialpdf_disclaimer_text.png

Observed output: Output artifact (Image): The disclaimer paragraph was fully preserved, including the Japanese GAAP note, translation note, forward-looking caveat, and rounding convention. — doc2mark_input2_financialpdf_disclaimer_text_parsed_success.png

Input artifact: Input artifact (Image): Input — doc2mark_input2_financialpdf_disclaimer_text.png

Output artifact: Output artifact (Image): The disclaimer paragraph was fully preserved, including the Japanese GAAP note, translation note, forward-looking caveat, and rounding convention. — doc2mark_input2_financialpdf_disclaimer_text_parsed_success.png

What changed: Image transformed into Image

Test case: Image → Image

Input type: Image

Input used: Input artifact (Image): Input — doc2mark_input1_hybridearnings_item_1_section.png

Observed output: Output artifact (Image): The Item 1 / Business heading was recognized as a Markdown-style header before the section text continued. — doc2mark_input1_hybridearnings_item_1_header_parsed_success.png

Input artifact: Input artifact (Image): Input — doc2mark_input1_hybridearnings_item_1_section.png

Output artifact: Output artifact (Image): The Item 1 / Business heading was recognized as a Markdown-style header before the section text continued. — doc2mark_input1_hybridearnings_item_1_header_parsed_success.png

What changed: Image transformed into Image

Test case: Image → Image

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 (Image): The section title is present, but the heading formatting is inconsistent rather than cleanly normalized. — doc2mark_input2_financialpdf_changes_header_parsed_failed.png

Input artifact: Input artifact (Image): Japanese report section headed Changes to Accounting Policies. — doc2mark_input2_financialpdf_changes_header.png

Output artifact: Output artifact (Image): The section title is present, but the heading formatting is inconsistent rather than cleanly normalized. — doc2mark_input2_financialpdf_changes_header_parsed_failed.png

What changed: Image transformed into Image

Test case: Image → Image

Input type: Image

Input used: Input artifact (Image): Input — doc2mark_input2_financialpdf_toc.png

Observed output: Output artifact (Image): The table of contents kept its section ordering and hierarchy, showing that simple linear pages can stay in sequence. — doc2mark_input2_financialpdf_toc_parsed_failed.png

Input artifact: Input artifact (Image): Input — doc2mark_input2_financialpdf_toc.png

Output artifact: Output artifact (Image): The table of contents kept its section ordering and hierarchy, showing that simple linear pages can stay in sequence. — doc2mark_input2_financialpdf_toc_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_financial_table.png

Observed output: Output artifact (Image): The annual-report financial summary was flattened into plain text with row-to-column mapping damaged. — doc2mark_input1_hybridearnings_financial_table_parsed_failed.png

Input artifact: Input artifact (Image): Input — doc2mark_input1_hybridearnings_financial_table.png

Output artifact: Output artifact (Image): The annual-report financial summary was flattened into plain text with row-to-column mapping damaged. — doc2mark_input1_hybridearnings_financial_table_parsed_failed.png

What changed: Image transformed into Image

Test case: Image → Image

Input type: Image

Input used: Input artifact (Image): Input — doc2mark_input2_financialpdf_business_results_table.png

Observed output: Output artifact (Image): The quarterly business-results table merged the numeric columns into the first cell, breaking the row-to-column mapping. — doc2mark_input2_financialpdf_business_results_table_parsed_failed.png

Input artifact: Input artifact (Image): Input — doc2mark_input2_financialpdf_business_results_table.png

Output artifact: Output artifact (Image): The quarterly business-results table merged the numeric columns into the first cell, breaking the row-to-column mapping. — doc2mark_input2_financialpdf_business_results_table_parsed_failed.png

What changed: Image transformed into Image

Test case: Image → Image

Input type: Image

Input used: Input artifact (Image): Input — doc2mark_input2_financialpdf_corporate_info_table_bonus_criterion.png

Observed output: Output artifact (Image): A simple corporate-info table was emitted as Markdown, showing that the output syntax changes from table to table. — doc2mark_input2_corporate_info_table_parsed_md_format.png

Input artifact: Input artifact (Image): Input — doc2mark_input2_financialpdf_corporate_info_table_bonus_criterion.png

Output artifact: Output artifact (Image): A simple corporate-info table was emitted as Markdown, showing that the output syntax changes from table to table. — doc2mark_input2_corporate_info_table_parsed_md_format.png

What changed: Image transformed into Image

Test case: Image → Image

Input type: Image

Input used: Input artifact (Image): Input — doc2mark_input2_financialpdf_quarterly_table_bonus_criterion.png

Observed output: Output artifact (Image): Another table from the same document was emitted as HTML, confirming inconsistent table syntax across pages. — doc2mark_input2_financialpdf_quarterly_table_bonus_parsed_html_format.png

Input artifact: Input artifact (Image): Input — doc2mark_input2_financialpdf_quarterly_table_bonus_criterion.png

Output artifact: Output artifact (Image): Another table from the same document was emitted as HTML, confirming inconsistent table syntax across pages. — doc2mark_input2_financialpdf_quarterly_table_bonus_parsed_html_format.png

What changed: Image transformed into Image

Test case: Image → Image

Input type: Image

Input used: Input artifact (Image): Input — doc2mark_input1_hybridearnings_financial_charts.png

Observed output: Output artifact (Image): The four chart panels were fragmented into labels, scattered values, and a broken HTML table, making the trend data unusable. — doc2mark_input1_hybridearnings_financial_charts_parsed_failed.png

Input artifact: Input artifact (Image): Input — doc2mark_input1_hybridearnings_financial_charts.png

Output artifact: Output artifact (Image): The four chart panels were fragmented into labels, scattered values, and a broken HTML table, making the trend data unusable. — doc2mark_input1_hybridearnings_financial_charts_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_logo.png

Observed output: Output artifact (Image): The Target logo was dropped; only the report title text remained. — doc2mark_input1_hybridearnings_logo_parsed_failed.png

Input artifact: Input artifact (Image): Input — doc2mark_input1_hybridearnings_logo.png

Output artifact: Output artifact (Image): The Target logo was dropped; only the report title text remained. — doc2mark_input1_hybridearnings_logo_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_ceo_sign.png

Observed output: Output artifact (Image): The handwritten signature image was omitted, leaving only the printed Brian Cornell signature line. — doc2mark_input1_hybridearnings_ceo_sign_parsed_failed.png

Input artifact: Input artifact (Image): Input — doc2mark_input1_hybridearnings_ceo_sign.png

Output artifact: Output artifact (Image): The handwritten signature image was omitted, leaving only the printed Brian Cornell signature line. — doc2mark_input1_hybridearnings_ceo_sign_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_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.

image
Input artifact for "PDF-to-Markdown Conversion" test: Input, doc2mark_input1_hybridearnings_general_section.png
image
Output artifact for "PDF-to-Markdown Conversion" test: The full business paragraph survived, including the Target Corporation description and credit-card segment history., doc2mark_input1_hybridearnings_general_section_parsed_failed.png
The full business paragraph survived, including the Target Corporation description and credit-card segment history.
image
Input artifact for "PDF-to-Markdown Conversion" test: Input, doc2mark_input2_financialpdf_disclaimer_text.png
image
Output artifact for "PDF-to-Markdown Conversion" test: The disclaimer paragraph was fully preserved, including the Japanese GAAP note, translation note, forward-looking caveat, and rounding convention., doc2mark_input2_financialpdf_disclaimer_text_parsed_success.png
The disclaimer paragraph was fully preserved, including the Japanese GAAP note, translation note, forward-looking caveat, and rounding convention.
image
Input artifact for "PDF-to-Markdown Conversion" test: Input, doc2mark_input1_hybridearnings_item_1_section.png
image
Output artifact for "PDF-to-Markdown Conversion" test: The Item 1 / Business heading was recognized as a Markdown-style header before the section text continued., doc2mark_input1_hybridearnings_item_1_header_parsed_success.png
The Item 1 / Business heading was recognized as a Markdown-style header before the section text continued.
image
Input artifact for "PDF-to-Markdown Conversion" test: Japanese report section headed Changes to Accounting Policies., doc2mark_input2_financialpdf_changes_header.png
Japanese report section headed Changes to Accounting Policies.
image
Output artifact for "PDF-to-Markdown Conversion" test: The section title is present, but the heading formatting is inconsistent rather than cleanly normalized., doc2mark_input2_financialpdf_changes_header_parsed_failed.png
The section title is present, but the heading formatting is inconsistent rather than cleanly normalized.
image
Input artifact for "PDF-to-Markdown Conversion" test: Input, doc2mark_input2_financialpdf_toc.png
image
Output artifact for "PDF-to-Markdown Conversion" test: The table of contents kept its section ordering and hierarchy, showing that simple linear pages can stay in sequence., doc2mark_input2_financialpdf_toc_parsed_failed.png
The table of contents kept its section ordering and hierarchy, showing that simple linear pages can stay in sequence.
image
Input artifact for "PDF-to-Markdown Conversion" test: Input, doc2mark_input1_hybridearnings_financial_table.png
image
Output artifact for "PDF-to-Markdown Conversion" test: The annual-report financial summary was flattened into plain text with row-to-column mapping damaged., doc2mark_input1_hybridearnings_financial_table_parsed_failed.png
The annual-report financial summary was flattened into plain text with row-to-column mapping damaged.
image
Input artifact for "PDF-to-Markdown Conversion" test: Input, doc2mark_input2_financialpdf_business_results_table.png
image
Output artifact for "PDF-to-Markdown Conversion" test: The quarterly business-results table merged the numeric columns into the first cell, breaking the row-to-column mapping., doc2mark_input2_financialpdf_business_results_table_parsed_failed.png
The quarterly business-results table merged the numeric columns into the first cell, breaking the row-to-column mapping.
image
Input artifact for "PDF-to-Markdown Conversion" test: Input, doc2mark_input2_financialpdf_corporate_info_table_bonus_criterion.png
image
Output artifact for "PDF-to-Markdown Conversion" test: A simple corporate-info table was emitted as Markdown, showing that the output syntax changes from table to table., doc2mark_input2_corporate_info_table_parsed_md_format.png
A simple corporate-info table was emitted as Markdown, showing that the output syntax changes from table to table.
image
Input artifact for "PDF-to-Markdown Conversion" test: Input, doc2mark_input2_financialpdf_quarterly_table_bonus_criterion.png
image
Output artifact for "PDF-to-Markdown Conversion" test: Another table from the same document was emitted as HTML, confirming inconsistent table syntax across pages., doc2mark_input2_financialpdf_quarterly_table_bonus_parsed_html_format.png
Another table from the same document was emitted as HTML, confirming inconsistent table syntax across pages.
image
Input artifact for "PDF-to-Markdown Conversion" test: Input, doc2mark_input1_hybridearnings_financial_charts.png
image
Output artifact for "PDF-to-Markdown Conversion" test: The four chart panels were fragmented into labels, scattered values, and a broken HTML table, making the trend data unusable., doc2mark_input1_hybridearnings_financial_charts_parsed_failed.png
The four chart panels were fragmented into labels, scattered values, and a broken HTML table, making the trend data unusable.
image
Input artifact for "PDF-to-Markdown Conversion" test: Input, doc2mark_input1_hybridearnings_logo.png
image
Output artifact for "PDF-to-Markdown Conversion" test: The Target logo was dropped; only the report title text remained., doc2mark_input1_hybridearnings_logo_parsed_failed.png
The Target logo was dropped; only the report title text remained.
image
Input artifact for "PDF-to-Markdown Conversion" test: Input, doc2mark_input1_hybridearnings_ceo_sign.png
image
Output artifact for "PDF-to-Markdown Conversion" test: The handwritten signature image was omitted, leaving only the printed Brian Cornell signature line., doc2mark_input1_hybridearnings_ceo_sign_parsed_failed.png
The handwritten signature image was omitted, leaving only the printed Brian Cornell signature line.
image
Input artifact for "PDF-to-Markdown Conversion" test: Input, doc2mark_input1_hybridearnings_growth_section.png
image
Output artifact for "PDF-to-Markdown Conversion" test: 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
The multi-column growth page was flattened into interleaved paragraphs and bullets, so the intended column reading order was broken.
image
Input artifact for "PDF-to-Markdown Conversion" test: Input, doc2mark_input1_hybridearnings_footnotes.png
image
Output artifact for "PDF-to-Markdown Conversion" test: 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
The table footnotes were extracted as a separate block of condensed text rather than staying attached to the table.
file
input3_scannedpaper.pdf
Scanned research paper used as the OCR test case.
file
doc2mark_input3_scannedpaper_output.md
Loading 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.
pdf
input1_hybridearnings.pdf
markdown
doc2mark_input1_hybridearnings_output.md
Loading file...
The 84-page hybrid earnings report completed in 29 seconds without truncation or a crash, although formatting errors persisted throughout the file.
pdf
input2_financialpdf.pdf
markdown
doc2mark_input2_financialpdf_output.md
Loading file...
The 18-page financial report completed in 15 seconds with complete text extraction, but table formatting stayed inconsistent.
Bottom Line
The footnotes survive as text, but they are no longer tightly linked to the table they explain.
From our researchPDF to markdown using open source libraries

Pricing

Free and open source

Open source
$0
MIT-licensed

The report describes doc2mark as MIT-licensed and free.

✓ Use This 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 This 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.
developer-toolsdocumentation-toolstext
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.
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.
No. The four-panel financial highlights chart was split into labels, numbers, and a broken table, so the trend data was not recoverable.
No. The cover logo and the CEO signature were dropped or reduced to text, with no image placeholders.
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.
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.
The report describes it as open source (MIT) and lists it as free / $0.

Banner Preview

How the embed badge will look on your site

doc2mark featured on AI Demos

Embed HTML

Copy this code to your website source

<a target="_blank" href="https://aidemos.com/tools/doc2mark?utm_source=doc2mark_embed" style="width: 250px; height: 80px; border-radius:4px;" width="250" height="80"> <img src="https://aidemos-website-images.s3.amazonaws.com/featured.png" alt="doc2mark | Featured on AI Demos" style="width: 250px; height: 80px; border-radius:4px;" width="250" height="80"> </a>

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

Similar Tools

Discover more AI tools like doc2mark to enhance your workflow.

Comments (0)

Please Log in to join the discussion.

Back to Top