pdf轉化為md格式后,意味著非結構化文本轉為結構化文本,能清晰定位大標題、子標題,圖表。
方便后續處理,因為llamaindex和langchain能更有效切分md類文本,避免信息丟失。
1)讀取pdf為txt
讀取pdf,并使用RecursiveCharacterTextSplitter去嘗試分塊,一般情況下效果不好
pdf文本暫時表示recur_text
from langchain.text_splitter import RecursiveCharacterTextSplitter, CharacterTextSplitterfrom pypdf import PdfReader
# 讀取 PDF 文件
pdf_path = 'docs/word.pdf'
reader = PdfReader(pdf_path)
recur_text = ''
for page in reader.pages:recur_text += page.extract_text().strip() + "\n\n"recur_splitter = RecursiveCharacterTextSplitter(separators=["。"],chunk_size = 512,chunk_overlap = 128
)
recur_docs = recur_splitter.create_documents([recur_text])
2)使用llm將txt轉化為md
qwen或deepseek小一點的LLM不能完成這個任務,deepseek-r1完整版本可以。
prompt示例如下
# 示例調用
prompt = """
請將以下合同轉化為md格式。
---
{}
""".format(recur_text)
若recur_text太長,需要切分后分批調用。
另外一種方式,就是將pdf先轉化為圖譜,在調用qwen2.5-vl模型解析圖片輸出md5文檔。
reference
---
qwen2.5vl-pdf2md
https://github.com/QwenLM/Qwen2.5-VL/blob/main/cookbooks/document_parsing.ipynb
olmocr
https://github.com/allenai/olmocr
六個開源的PDF轉Markdown項目
https://zhuanlan.zhihu.com/p/711487482
llm-parse
https://github.com/tanchangsheng/llm-parse