跳转到主内容
websoft网络软件专家 - 深耕网络技术,打造实用软件!

PDF转Markdown,Triton+Marker服务化部署怎么做?

在知识库场景下,PDF文档的解析是一项常见需求。本文将带你了解如何使用开源工具marker将PDF转换为Markdown,并借助Triton Inference Server实现服务化部署。

知识库场景下的PDF解析

PDF文档通常包含多样化的格式、图片、表格等元素。直接将PDF转化为text容易丢失和混淆文件中内容的组织形式。将PDF转化为Markdown是一种更优的方式,因为它能够更好地保留内容的结构化信息。

marker简介和安装

marker是一个基于Python语言实现的开源项目,它基于多个OCR模型的组合流水线来完成PDF转Markdown的任务。

pip install marker-pdf

安装完成后,在环境变量路径下会安装对应的转化工具marker_single。

marker模型下载准备

marker实际上调用了众多的模型对PDF进行识别和推理,因此需要下载一些模型文件。在HuggingFace上可以找到所有需要的模型,并放在vikp目录下。

marker快速开始

使用环境变量下的marker_single命令即可运行marker。输入为单篇PDF文档的位置,输出为一个结果目录。

marker_single 606addeff4c0070ce300ff0adc88eceb.pdf ./ --batch_multiplier 2 --max_pages 1 --langs Chinese

日志表明marker分别加载了三个模型到GPU,然后将推理的结果写到了606addeff4c0070ce300ff0adc88eceb目录。

使用Triton服务化

使用命令行的方式不能实现跨机器跨语言的场景,因此需要将marker服务化。marker本质上是torch模型组成的pipeline,因此很适合使用Triton Inference Server进行部署,最终暴露出HTTP API服务用于调用。

模型部署

首先用Docker拉取Triton基础镜像nvcr.io/nvidia/tritonserver:23.10-py3,并在其中pip安装marker-pdf包。然后设置模型的目录结构,Triton的模型统一存放在model_repository目录下。

docker run --rm --gpus=all --shm-size=1g -p18999:8000 -p18998:8001 -p18997:8002 \
-e PYTHONIOENCODING=utf-8 -w /models/marker-pdf/1 \
-v /home/model_repository/:/models \
tritonserver:marker-pdf-env \
tritonserver --model-repository=/models --model-control-mode explicit --load-model marker-pdf --log-format ISO8601

启动成功后,使用Python请求调用服务测试。

import time
import base64
import requests
import json

data = base64.b64encode(open(
                            

相关文章