
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_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.




























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.