体验下微软开源的Markdown转换工具Markitdown

这个工具的来源是看到了大神的个人知识库的文章,比之以前可能都是以rag的形式,现在是通过直接让大模型学习提取原始知识文档,来给自己做个人知识库的索引和整理,那么有一个前提是大模型更擅长的文档格式是纯文本的,或者说就是以Markdown的形式,因为既有段落格式,又是相对纯文本的,便于输入大模型.
那很多情况我们就需要把我们现有的文档转换成Markdown形式,便于大模型去分析理解
刚好想起来前阵子微软开源了这么个工具,
仓库在这里
我们就来简单的使用体验下

1
2
3
git clone git@github.com:microsoft/markitdown.git
cd markitdown
pip3 install -e 'packages/markitdown[all]'

我们不去具体阅读代码,就是来使用体验下
可以直接把仓库Clone下来,然后安装就可以了
简单的使用说明是

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
usage: SYNTAX:

markitdown <OPTIONAL: FILENAME>
If FILENAME is empty, markitdown reads from stdin.

EXAMPLE:

markitdown example.pdf

OR

cat example.pdf | markitdown

OR

markitdown < example.pdf

OR to save to a file use

markitdown example.pdf -o example.md

OR

markitdown example.pdf > example.md

Convert various file formats to markdown.

我们可以用最贱的方式

1
markitdown path-to-file.pdf > document.md

我在网上找了个transformer的论文中文版pdf
来转换成markdown试一下
发现其实这个转换还是限制挺大的,并没有非常全能
比如pdf中是文本的表格
也会错乱的比较多

模型BLEU训练成本(FLOPs)
cmidrule
EN-DE EN-FREN-DEEN-FR
———————–—–—–
ByteNet [18]23.75
1.0 ⋅ 1020
Deep-Att + PosUnk [39]39.2
——————————-———–———-———-
GNMT + RL [38]24.6 39.922.3 ⋅ 10191.4 ⋅ 1020
9.6 ⋅ 10181.5 ⋅ 1020
ConvS2S [9]25.16 40.46
MoE [32]26.03 40.562.0 ⋅ 10191.2 ⋅ 1020
Deep-Att + PosUnk Ensemble [39]40.48.0 ⋅ 1020
1.8 ⋅ 10201.1 ⋅ 1021
GNMT + RL Ensemble [38]26.30 41.16
ConvS2S Ensemble [9]26.36 41.297.7 ⋅ 10191.2 ⋅ 1021
第6张的表就变成了这样子,可能还是主体的文本稍微好一点
但是论文相对来说结构也不是那么已读也是个原因
另外如果是非文本型的可能还是需要结合外部的ocr和大模型来辅助提取内容
可以用markitdown的插件系统
markitdown-ocr Plugin
The markitdown-ocr plugin adds OCR support to PDF, DOCX, PPTX, and XLSX converters, extracting text from embedded images using LLM Vision — the same llm_client / llm_model pattern that MarkItDown already uses for image descriptions. No new ML libraries or binary dependencies required.
1
2
pip install markitdown-ocr
pip install openai # or any OpenAI-compatible client

然后通过代码设置

1
2
3
4
5
6
7
8
9
10
from markitdown import MarkItDown
from openai import OpenAI

md = MarkItDown(
enable_plugins=True,
llm_client=OpenAI(),
llm_model="gpt-4o",
)
result = md.convert("document_with_images.pdf")
print(result.text_content)

这样就能把包含图片的信息也进行转换,迫于没有外国信用卡,我就没法演示了