背景
需要做一个内部的合同文档审核【图片型pdf】,输入给大模型来识别检测提取相关的字段
我测试发现 markdown格式的文本对大模型更友好,比传统的ocr识别结果更好。
markitdown
项目地址: microsoft/markitdown: Python tool for converting files and office documents to Markdown.
Azure + markitdown
配合Azure上的OCR服务来实现对图片型文档的markdown化
想要调用azure的服务要先注册并登录相关的应用
Azure 上的 Document Analysis
pip install 'markitdown[all]'
需要注意的是:
我是在自己的本地windows环境中使用这个,即使用 az login 来获取权限认证的
如果在 CI/CD 或者 Linux 机器下,或者 docker 环境中需要通过Azure鉴权
az login
- 使用az login 登录后的
from markitdown import MarkItDown
import time
# Azure的docs_ocr的ENDPOINT
DOCS_OCR_ENDPOINT=""
start_time = time.time()
# 初始化 Document Intelligence 客户端
md = MarkItDown(docintel_endpoint=DOCS_OCR_ENDPOINT)
# 转换 PDF(或其他文档)并获取结果
result = md.convert("test/1.pdf") # 确保这里是带扩展名的文件路径
with open("1.md", "w", encoding="utf-8") as f:
f.write(result.text_content)
print("已成功将内容输出到 1.md")
end = time.time()
print("total time:", end - start_time, "seconds")
- 手动鉴权的方式
CLI命令模式
markitdown path-to-file.pdf > document.md
后续更新了LLM来描述图片,也是非常带劲,如果需要将文档markdown操作