Intelligent PDF/Image to Markdown converter using PaddleOCR cloud API
Project description
markitdown-paddleocr
智能 PDF/图片转 Markdown 插件,使用百度 PaddleOCR 云端 API 驱动的 OCR 识别。
特性
- 🔍 智能检测:自动识别每页内容类型(纯文本 vs 图片/表格)
- 📄 默认解析:纯文本页面使用 pdfplumber/pdfminer 提取,速度快、成本低
- 🤖 AI 增强:复杂页面(图片、表格)使用 PaddleOCR API 转换为 Markdown
- 🔄 异步 Job 模型:提交 OCR 任务 → 轮询状态 → 获取结果
- 📊 结构化输出:返回 Markdown(含表格、公式、图表等)
安装
pip install markitdown-paddleocr
配置
环境变量(推荐)
# 必需:百度 PaddleOCR Token
export BAIDU_PADDLE_TOKEN="your-paddle-token"
# 可选
export PADDLE_OCR_MODEL="PaddleOCR-VL-1.5" # 模型名称
配置优先级
构造函数参数 > 环境变量 > 内置默认值
使用方法
命令行(推荐)
# 1. 设置 Token
export BAIDU_PADDLE_TOKEN="your-token"
# 2. 查看已安装插件
markitdown --list-plugins
# 3. 使用插件转换 PDF
markitdown -p document.pdf
# 4. 保存到文件
markitdown -p document.pdf -o output.md
Python API
from markitdown import MarkItDown
from markitdown_paddleocr import PaddleOcrConverter
# 方式1:自动从环境变量读取 BAIDU_PADDLE_TOKEN
converter = PaddleOcrConverter()
md = MarkItDown(enable_plugins=False)
md.register_converter(converter, priority=-1.0)
result = md.convert("document.pdf")
print(result.markdown)
# 方式2:手动传入 Token
converter = PaddleOcrConverter(token="your-token")
md = MarkItDown(enable_plugins=False)
md.register_converter(converter, priority=-1.0)
result = md.convert("document.pdf")
print(result.markdown)
# 方式3:强制所有页面使用 OCR
converter = PaddleOcrConverter(token="your-token", force_ai=True)
md = MarkItDown(enable_plugins=False)
md.register_converter(converter, priority=-1.0)
result = md.convert("document.pdf")
print(result.markdown)
直接使用 PaddleClient
from markitdown_paddleocr import PaddleClient
client = PaddleClient(token="your-token")
# 本地文件
markdown = client.ocr(file_bytes=open("image.png", "rb").read(), filename="image.png")
print(markdown)
# URL 模式
markdown = client.ocr(file_url="https://example.com/document.pdf")
print(markdown)
配置选项
PaddleOcrConverter 参数
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
token |
str | 环境变量 BAIDU_PADDLE_TOKEN |
PaddleOCR Token |
model |
str | PaddleOCR-VL-1.5 |
OCR 模型名称 |
poll_interval |
float | 2.0 | 轮询间隔(秒) |
poll_timeout |
float | 300.0 | 轮询超时(秒) |
force_ai |
bool | False | 强制所有页面使用 OCR |
use_doc_orientation_classify |
bool | False | 文档方向分类 |
use_doc_unwarping |
bool | False | 文档去扭曲 |
use_chart_recognition |
bool | False | 图表识别 |
环境变量
| 变量 | 说明 | 示例 |
|---|---|---|
BAIDU_PADDLE_TOKEN |
Token(必需) | 7963b85a... |
PADDLE_OCR_MODEL |
模型名称 | PaddleOCR-VL-1.5 |
工作原理
PDF/图片 输入
│
▼
PaddleOcrConverter.convert()
│
├─ 图片文件 ──► PaddleClient.ocr() ──► markdown
│
└─ PDF 文件 ──► 逐页分析内容类型
│
├─ 纯文本页 ──► pdfplumber 提取文本
│
└─ 复杂页(图片/表格)
│
└─► 渲染为图片 ──► PaddleClient.ocr()
│
├─ POST /api/v2/ocr/jobs (提交 Job)
├─ GET /api/v2/ocr/jobs/{id} (轮询状态)
└─ GET jsonUrl (获取 JSONL 结果)
│
▼
合并输出完整 Markdown
依赖
markitdown>=0.1.0- 基础框架pdfplumber>=0.11.9- PDF 解析和截图pdfminer.six>=20251230- 文本提取备用Pillow>=9.0.0- 图像处理requests>=2.28.0- HTTP 请求
许可证
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file markitdown_paddleocr-0.1.0.tar.gz.
File metadata
- Download URL: markitdown_paddleocr-0.1.0.tar.gz
- Upload date:
- Size: 10.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
693f890f0be8477444e5f32d99b513e3ffca2b8b64200fc90bd06734241ed151
|
|
| MD5 |
f5078d3308ce587a9f50a90abbea338a
|
|
| BLAKE2b-256 |
b16bdc12dd28d8d6600c234b84cb022a01bb89a0a52b316642c419dd900dcaac
|
File details
Details for the file markitdown_paddleocr-0.1.0-py3-none-any.whl.
File metadata
- Download URL: markitdown_paddleocr-0.1.0-py3-none-any.whl
- Upload date:
- Size: 12.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c45bc54231a7a0957f623e8612fd4728654db5ebdda95e7dddfd5e1aa456f09d
|
|
| MD5 |
fd1cb892b0708df5c6f4baa6f5fe42c0
|
|
| BLAKE2b-256 |
3f9e8408dd2d87bed1795e795066321bc1d6d2421c81e10728d8b4bc3e583f92
|