[]]
若要获取本公司的云端 API 服务或地面设施部署的文档智能系统资料,敬请访问官方网站。
性能表现
在众多云服务以及各类开源工具之中, 的性能测试数据十分出色。
这个结果指的是单页 PDF 的串行处理情形。在成批处理的情况下,运行效率大幅提高,使用 H100 显卡时,预估的每秒处理页数能达到 25 页。
具体测试详细的速度表现和准确度数据,还有关于执行个人基准测试的指引。
混合模式
若需要最大程度保证精确性,可以加上特殊标识,让大语言模型与特定技术融合。这样能够完成跨页面表格整合、内部数学表达式解析、表格数据规范化以及表单信息获取等任务。这种技术能够配合任何指定的模型或版本。系统预设的是采用特定的版本。具体内容请查阅相关资料。
这里呈现了运用 闪存 以及 开启 方式的表格基准测试结果对比
如您所见, 模式提供的准确度高于单独使用 或 。
示例PDF文件类型
Think
[]
查看
查看
学术论文
查看
查看
Multi- CNN
学术论文
查看
查看
商业用途
我们的模型权重依据改良版的 AI Pubs Open Rail-M 授权条款发布,该条款允许学术研究、个人应用,以及年营收不超过 200 万美元的初创企业免费获取,代码部分则遵循 GPL 授权协议。若需获取更全面的商业授权或免除 GPL 相关义务,请前往我们的费用说明界面查询。
托管 API 及本地部署
开放 API 接口,同时配备简易的本地安装方法,登记过程零费用,并且会发放试用额度。
该 API 具有以下特点:
社区
是我们讨论未来开发方向的平台。
安装
您需要 3.10+ 和 。
通过以下命令安装:
pip install marker-pdf
如果需要将文件应用在非 PDF 格式的资料上,就必须借助下面提供的指令来增设其他必要的组件。
pip install marker-pdf[full]
使用方法
首先,进行一些配置:
交互式应用
我介绍一款软件,您借助该软件能动态体验,还能选用部分基础功能。启动指令如下:
安装streamlit软件包,同时安装streamlit-acemarker_gui软件包
转换单个文件
标记单个文件,路径为文件.pdf
您可以传入 PDF 或图像。
选项:
surya OCR 支持的语言清单在此处提供。倘若您无需 OCR,则能够应对所有语言。
转换多个文件
marker /path/to/input/folder
在多个 GPU 上转换多个文件
设备数量为四, 工作人员数量为十五, 使用标记块转换功能, 将源文件夹内的PDF文件迁移至目标文件夹, 输出格式为Markdown, 源文件夹路径为pdf_in, 目标文件夹路径为md_out
[]
其他可接收的参数,请查阅 //pdf.py 文件里的 类。
from marker.converters.pdf import PdfConverterfrom marker.models import create_model_dictfrom marker.output importtext_from_renderedconverter是PdfConverter的一个实例,创建时传入了artifact_dict参数,该参数由create_model_dict函数生成,接着执行了converter方法"FILEPATH"文本, _, 图片通过渲染结果提取出来
这是一个基础模型,它的特性会依据请求的输出形式而有所变化。在输出情况下(即标准模式),用户可以得到、以及这三个参数。若选择JSON格式输出,则能够获得、以及这三个参数。
自定义配置
可以运用 进行设定。若需了解全部可选功能,可运行 --help。
from marker.converters.pdf import PdfConverterfrom marker.models import create_model_dictfrom marker.config.parser import ConfigParserconfig = { "output_format": "json", "ADDITIONAL_KEY": "VALUE"配置解析器加载配置文件,生成配置对象,根据配置对象生成配置字典,创建模型字典,获取处理组件列表,获取渲染器配置,获取大语言模型服务配置,创建转换器实例,执行转换操作,获取渲染结果"FILEPATH")
提取区块
每份资料由若干页构成,每页由若干板块组成,板块内部还能容纳其他板块,这些板块都可以借助代码进行管理。
以下是从文档中提取所有表单的示例:
from marker.converters.pdf import PdfConverterfrom marker.models import create_model_dictfrom marker.schema importBlockTypes转换器 = Pdf转换器( 工件字典 = 创建模型字典(),)文档 = 转换器构建文档"FILEPATH"表单元素 = 文档包含的块元素,类型为表单类型
查看处理器以获取更多提取和操作块的示例。
其他转换器
您还可以使用定义了不同转换流程的其他转换器:
提取表格
将仅转换并提取表格:
from marker.converters.table import TableConverterfrom marker.models import create_model_dictfrom marker.output importtext_from_renderedconverter = TableConverter( artifact_dict=生成模型字典(),)rendered = 转换器"FILEPATH")text, _, images = text_from_rendered(rendered)
这个装置的设置和那个装置一模一样。你可以把配置设为Table来跳过排版检查,并且认定每一页都是表格。如果设置成json,还能获取到单元格的边界框。
您也可以通过 CLI 运行此工具,命令如下
标记单个文件名,启用大型语言模型功能,强制布局块为表格形式,使用标记转换器中的表格转换器类,输出格式为JSON
仅使用 OCR
如果需要仅执行文字识别功能,也可以借助特定途径达成。采用某个指令能够固定字符的轮廓框。
from marker.converters.ocr import OCRConverterfrom marker.models import构建模型字典对象时,需要调用OCR转换器函数,并将生成的模型字典作为参数传入,转换器实例化后,执行转换操作,"FILEPATH")
此功能采用与 完全相同的配置。
您也可以通过 CLI 运行此功能,命令如下
标记单个文件名,调用转换器类,指定OCR转换器实现
结构化提取(测试版)
要实现结构化数据的获取marker是什么意思,可以采用特定的操作流程,该流程的启动需要事先完成大型语言模型服务的配置,具体配置方法可查阅相关文档,执行后系统会返回一个数据包,其中内含提取出来的信息,数据包的格式为JSON。
from marker.converters.extraction import ExtractionConverterfrom marker.models import create_model_dictfrom marker.config.parser import ConfigParserfrom pydantic import BaseModelclass Links(BaseModel): links: list[str这个模式是来自链接模型的JSON模式,配置解析器使用的是配置解析器类,参数是一个字典"page_schema": 结构})转换器 = 提取转换器( 物品字典=建立模型字典(), 配置=配置分析器生成配置字典(), 大语言模型服务=配置分析器获取大语言模型服务(),)呈现 = 转换器("FILEPATH")
输出会附带一个指定标记。假如在后续启动转换程序时,把该标记当作配置项输入,就能够省略对文件的再次解析环节。
输出格式
输出将包含:
HTML
HTML 输出与 输出类似:
JSON
JSON 的展现形式为层级构造,最末端的节点代表一个单元。这些末端节点可以是独立的清单条目,也可以是一段文字,或者是图片。
输出将形成多个页面留学之路,每个页面都当作一个独立模块对待。在内部系统里,模块类型多样,用以区分各类构成部分。
页面包含以下键:
子块具有两个额外的键:
请注意,页面的子块也可以有自己的子块(形成树形结构)。
{ "id": "/page/10/Page/366", "block_type": "Page", "html": " ", "polygon": [[0.0, 0.0], [612.0, 0.0], [612.0, 792.0], [0.0, 792.0]], "children": [ { "id": "/page/10/SectionHeader/0", "block_type": "SectionHeader", "html": "Supplementary Material for Subspace Adversarial Training
", "polygon": [ [217.845703125, 80.630859375], [374.73046875, 80.630859375], [374.73046875, 107.0], [217.845703125, 107.0] ], "children": null, "section_hierarchy": { "1": "/page/10/SectionHeader/1" }, "images": {} }, ... ] }
分块
分块形式与 JSON 类似,不过它把所有内容都变成了一条直线,而不是像树那样分支。它只展示每一页最上面的块。而且,每个块里面都有全部的 HTML 代码,所以不需要去分析树形结构就能重新组织。这种做法为 RAG 提供了方便又可变通的分块方法。
元数据
所有输出格式都会返回一个元数据字典,包含以下字段:
{ "table_of_contents": [ { "title": "Introduction", "heading_level": 1, "page_id": 0, "polygon": [...] } ], 计算生成的PDF目录清单 "page_stats": [ { "page_id": 0, "text_extraction_method": "pdftext", "block_counts": [("Span", 200), ...] }, ... ]}
LLM 服务
使用 -- 标志运行时,您可以选择以下服务:
这些服务可能还有其他可选配置,您可以通过查看类来了解。
内部结构
易于扩展。其核心组件包括:
需要设定特定应对方式,请进行改写。要增加不同的呈现样式,请进行设计。对于其他的数据形态marker是什么意思,请开发新的。
处理器和渲染器能够直接接收基础数据,因此您能够便捷地设定个性化的处理步骤。
API 服务器
这里有一个相当基础的 API 服务器,您能够依照以下步骤来启动它,
升级安装uvicorn, fastapi, python-multipartmarker_server, 在端口8001上运行
这个系统会开启一个服务,您能在 :8001 上找到它。要了解接口详情,请访问 :8001/docs。
您可以像这样发送请求:
通过发送网络请求,可以上传文件路径信息,具体操作如下,首先创建包含指定路径的字典,然后使用json模块将字典转换为字符串格式,接着向指定地址发起POST请求,并将转换后的字符串作为数据发送,最后获取并解析响应内容,完成整个流程
这个接口不够稳固,仅能处理少量请求。若要运用此服务,却寻求更可靠的转换功能,可选用托管的接口。
故障排除
倘若事情未达您的预期效果,以下若干调整或许能为您带来改善:
调试
设置调试参数可开启诊断状态,系统会记录每页生成的图形,其中包含检测到的排版和文字,同时会生成一个附加了更多框体数据的JSON文档。
基准测试总体 PDF 转换
我们利用通用爬虫抓取的独立 PDF 页面,组建了初始的评估资料库。我们借助一种将内容与标准文本段落进行匹配的规则,并采用大型语言模型作为评分者,来评定资料质量。
方法平均时间启发式评分LLM 评分
2.83837
95.6709
4.23916
23.348
84.2442
3.97619
6.36223
86.4281
4.15626
3.69949
86.7073
3.70429
基准测试在H100设备上执行,并借助其云端平台完成,此外,我们也能依据文件种类进行筛选查看。
文档类型 启发式 启发式 启发式 启发式 LLM
paper
96.6737
4.34899
87.1651
3.96421
91.2267
4.46861
92.135
3.72422
Book page
97.1846
4.16168
90.9532
4.07186
93.8886
4.35329
90.0556
3.64671
Other
95.1632
4.25076
81.1385
4.01835
79.6231
4.00306
83.8223
3.76147
Form
88.0147
3.84663
66.3081
3.68712
64.7512
3.33129
68.3857
3.40491
95.1562
4.13669
81.2261
83.6737
3.95683
84.8405
3.86331
95.3697
4.39106
82.5812
4.16111
81.3115
4.05556
86.3882
3.8
98.4021
4.5
93.4477
4.28125
96.0383
4.45312
92.0952
4.09375
93.9244
4.04412
77.4854
3.72059
80.3319
3.88235
79.6807
3.42647
Legal
96.689
4.27759
86.9769
3.87584
91.601
4.20805
87.8383
3.65552
page
98.8733
4.25806
84.7492
3.90323
96.9963
4.45161
92.6496
3.51613
page
98.2145
4.38776
87.2902
3.97959
93.5934
4.16327
93.0892
4.02041
吞吐量
我们使用单个长PDF文件对吞吐量进行了基准测试。
方法每页面耗时每文档耗时显存占用
0.18
43.42
3.17GB
在H100设备上,预估处理速度能达到每秒122页,由于内存资源消耗因素,可同时开展22项独立任务。
表格转换
借助..table.可以从PDF文档里取出表格数据。评估表格提取的效果,是将得到表格的HTML代码和原始HTML代码进行对照,对照工作依据的是一组测试数据。HTML代码的对比,运用基于树编辑距离的方法,用来判断结构相似度和内容匹配度。该系统能够找出PDF页面中所有表格的构造,并且获得了如下成绩:
方法平均分数总表格数
0.816
99
w/
0.907
99
0.829
99
如您所见,--标志可以显著提升表格识别性能。
我们筛除了那些和标准答案不一致的表格,原因是我们的布局检测方式跟预期模型有些出入(这种情况造成部分表格被分开或合并)。
运行您自己的基准测试
您可以在您的机器上基准测试的性能。通过以下方式手动安装:
复制这个网址到本地仓库 https://github.com/VikParuchuri/marker.git,然后安装项目依赖
整体 PDF 转换
在相应位置获取标准测试资料并展开压缩文件,接着依照下列步骤执行全面性能评估。
运行 benchmarks/overall.py 脚本,方法参数设置为 marker,评分指标包括 heuristic 和 llm
选项:
表格转换
已处理的数据集存放在这个位置,会自动进行下载。执行基准测试的指令如下:
执行名为table的Python脚本,通过参数--max_rows限制最大行数为100
选项:
工作原理
是一个深度学习模型管道,其工作流程如下:
它仅在必要时使用模型,从而提高了速度和准确性。
局限性
PDF 是一种结构繁复的文档类型,所以时常会出现运行不畅的情况,以下列举了若干已知缺陷,我们打算在后续版本中进行修正:
注意:传递 -- 和 -- 标志通常可以解决这些问题。
使用和部署示例
您一直能够在本地进行操作,假如您打算把它当作 API 发布出去,我们这里备有几种方案供您选择: