高效精准的PDF到Markdown转换工具
Marker API是一款性能卓越的PDF转Markdown工具,支持多语言和多种文档类型。该工具能精准提取文本、表格、代码块和图片,通过深度学习模型实现高速转换,尤其适用于学术论文、技术文档等复杂PDF的转换。与同类产品相比,转换速度提升4倍。Marker API部署简便,适用于GPU和CPU环境,为PDF文档处理提供灵活选择。
[!重要]
Marker API 提供了一个简单的端点,可以快速准确地将 PDF 文档转换为 Markdown。只需一键点击,您就可以部署 Marker API 端点并开始无缝转换 PDF。
原始 PDF | Marker-API | PyPDF |
---|---|---|
![]() | ![]() | ![]() |
要在 Python 环境中安装 Marker API,请按以下步骤操作:
git clone https://github.com/adithya-s-k/marker-api
cd marker-api
poetry install
或 pip install -e .
安装完成后,您可以通过 marker_api
命令运行服务器
marker_api
或
python server.py
要使用 Docker 运行 Marker API,请执行以下命令:
docker pull savatar101/marker-api:0.3 # 如果您在 GPU 上运行 docker run --gpus all -p 8000:8000 savatar101/marker-api:0.3 # 否则 docker run -p 8000:8000 savatar101/marker-api:0.3
或者,如果您更喜欢在本地构建 Docker 镜像: 然后,按如下方式运行 Docker 容器:
docker build -t marker-api . # 如果您在 GPU 上运行 docker run --gpus all -p 8000:8000 marker-api # 否则 docker run -p 8000:8000 marker-api
SkyPilot 是一个框架,用于在任何云上运行 LLM、AI 和批处理作业,提供最大的成本节省、最高的 GPU 可用性和托管执行。 要使用 Skypilot 在任何云提供商上部署 Marker API,请执行以下命令:
pip install skypilot-nightly[all] # 使用您选择的云提供商设置 skypilot sky launch skypilot.yaml
更多信息请参考 skypilot 文档。
/convert
POST
pdf_file
: 要转换的 PDF 文件。(类型: 文件)extract_images
(可选): 指定是否从 PDF 中提取图像。默认为 true
。(类型: 布尔值)成功响应:
代码: 200 OK
内容: 包含转换后的 Markdown 文本、元数据和可选的提取图像数据的 JSON。
{ "markdown": "转换后的 Markdown 文本...", "metadata": {...}, "images": { "image_1": "data:image/png;base64,<base64编码的图像数据>", "image_2": "data:image/png;base64,<base64编码的图像数据>", ... } }
如果响应中包含图像,它们以 base64 编码格式提供。您可以使用这些数据在应用程序中显示图像。此外,您可以使用以下 Python 脚本 invoke.py 来调用端点,处理本地 PDF 文件并在本地保存图像
错误响应:
curl -X POST \ -F "pdf_file=@example.pdf;type=application/pdf" \ http://localhost:8000/convert
有关如何调用 API 并将其保存为 Markdown 的示例,请参考 Notebook 和 脚本
import requests import os url = "http://localhost:8000/convert" pdf_file_path = "example.pdf" with open(pdf_file_path, 'rb') as pdf_file: pdf_content = pdf_file.read() files = {'pdf_file': (os.path.basename(pdf_file_path), pdf_content, 'application/pdf')} response = requests.post(url, files=files) print(response.json())
<details> <summary><h3>Marker 说明</h3></summary>const fetch = require('node-fetch'); const fs = require('fs'); const url = "http://localhost:8000/convert"; const pdfFilePath = "example.pdf"; fs.readFile(pdfFilePath, (err, pdfContent) => { if (err) { console.error(err); return; } const formData = new FormData(); formData.append('pdf_file', new Blob([pdfContent], { type: 'application/pdf' }), pdfFilePath); fetch(url, { method: 'POST', body: formData }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error('Error:', error)); });
Marker 能够快速准确地将 PDF 转换为 markdown。