当前位置: 首页 > ops >正文

工具测试 - marker (Convert PDF to markdown + JSON quickly with high accuracy)

参考链接如下::

参考链接:https://github.com/datalab-to/marker?tab=readme-ov-file#llm-services

底层的OCR模型:https://github.com/datalab-to/surya

作用:开源免费🆓,多 GPU 推理、生成效果不错,可结合 llm 进行优化,后续可以多试试,对比对比其他工具,目前工作中够用就行,暂时还没必要自己训练。

1、测试和使用非常的简单:只需要 2 行:

1.1 安装:

pip install marker-pdf

1.2 使用: 全部默认配置的话是这样的

marker_single ./2506.11763v1.pdf 

建议:

1、查看文档配置相关参数,我这里因为是 32 页文档,没有处理完成,处理了25 页(1.4w字(word 统计) 用时152s ,每秒接近 92 个字,使用的是 4090 GPU 机器。);

2、对比看看表格情况怎样?

原始 PDF: 感觉差不多够用了,不够后面可以再加 LLM 增强

3、还可以多 GPU 执行,大家可以多多探索下

官方 -> Usage

First, some configuration:

  • Your torch device will be automatically detected, but you can override this. For example, TORCH_DEVICE=cuda.
  • Some PDFs, even digital ones, have bad text in them. Set -force_ocr to force OCR on all lines, or the strip_existing_ocr to keep all digital text, and strip out any existing OCR text.
  • If you care about inline math, set force_ocr to convert inline math to LaTeX.

Interactive App

I've included a streamlit app that lets you interactively try marker with some basic options. Run it with:

pip install streamlit streamlit-ace
marker_gui

Convert a single file

marker_single /path/to/file.pdf

You can pass in PDFs or images.

Options:

  • -page_range TEXT: Specify which pages to process. Accepts comma-separated page numbers and ranges. Example: -page_range "0,5-10,20" will process pages 0, 5 through 10, and page 20.
  • -output_format [markdown|json|html|chunks]: Specify the format for the output results.
  • -output_dir PATH: Directory where output files will be saved. Defaults to the value specified in settings.OUTPUT_DIR.
  • -paginate_output: Paginates the output, using \\n\\n{PAGE_NUMBER} followed by  * 48, then \\n\\n
  • -use_llm: Uses an LLM to improve accuracy. You will need to configure the LLM backend - see below.
  • -force_ocr: Force OCR processing on the entire document, even for pages that might contain extractable text. This will also format inline math properly.
  • -block_correction_prompt: if LLM mode is active, an optional prompt that will be used to correct the output of marker. This is useful for custom formatting or logic that you want to apply to the output.
  • -strip_existing_ocr: Remove all existing OCR text in the document and re-OCR with surya.
  • -redo_inline_math: If you want the absolute highest quality inline math conversion, use this along with -use_llm.
  • -disable_image_extraction: Don't extract images from the PDF. If you also specify -use_llm, then images will be replaced with a description.
  • -debug: Enable debug mode for additional logging and diagnostic information.
  • -processors TEXT: Override the default processors by providing their full module paths, separated by commas. Example: -processors "module1.processor1,module2.processor2"
  • -config_json PATH: Path to a JSON configuration file containing additional settings.
  • config --help: List all available builders, processors, and converters, and their associated configuration. These values can be used to build a JSON configuration file for additional tweaking of marker defaults.
  • -converter_cls: One of marker.converters.pdf.PdfConverter (default) or marker.converters.table.TableConverter. The PdfConverter will convert the whole PDF, the TableConverter will only extract and convert tables.
  • -llm_service: Which llm service to use if -use_llm is passed. This defaults to marker.services.gemini.GoogleGeminiService.
  • -help: see all of the flags that can be passed into marker. (it supports many more options then are listed above)

The list of supported languages for surya OCR is here. If you don't need OCR, marker can work with any language.

Convert multiple files

marker /path/to/input/folder
  • marker supports all the same options from marker_single above.
  • -workers is the number of conversion workers to run simultaneously. This is automatically set by default, but you can increase it to increase throughput, at the cost of more CPU/GPU usage. Marker will use 5GB of VRAM per worker at the peak, and 3.5GB average.

Convert multiple files on multiple GPUs

NUM_DEVICES=4 NUM_WORKERS=15 marker_chunk_convert ../pdf_in ../md_out
  • NUM_DEVICES is the number of GPUs to use. Should be 2 or greater.
  • NUM_WORKERS is the number of parallel processes to run on each GPU.

Use from python

See the PdfConverter class at marker/converters/pdf.py function for additional arguments that can be passed.

from marker.converters.pdf import PdfConverter
from marker.models import create_model_dict
from marker.output import text_from_renderedconverter = PdfConverter(artifact_dict=create_model_dict(),
)
rendered = converter("FILEPATH")
text, _, images = text_from_rendered(rendered)

rendered will be a pydantic basemodel with different properties depending on the output type requested. With markdown output (default), you'll have the properties markdownmetadata, and images. For json output, you'll have childrenblock_type, and metadata.

http://www.xdnf.cn/news/17974.html

相关文章:

  • 本地处理不上传!隐私安全的PDF转换解决方案
  • 【Netty核心解密】Channel与ChannelHandlerContext:网络编程的双子星
  • 最优化:建模、算法与理论|02 Optimization Modeling and Typical Examples(1)
  • ReID/OSNet 算法模型量化转换实践
  • 芋道RBAC实现介绍
  • 基于Node.js+Express的电商管理平台的设计与实现/基于vue的网上购物商城的设计与实现/基于Node.js+Express的在线销售系统
  • css: word pacing属性
  • 【原理】C#构造函数可以标记为Static吗
  • Oracle Undo Tablespace 使用率暴涨案例分析
  • Java 方法引用详解
  • Vue.js 路由/redirect重定向刷新机制详解
  • 新的“MadeYouReset”方法利用 HTTP/2 进行隐秘的 DoS 攻击
  • linux-高级IO(上)
  • 数据结构4线性表——顺序栈
  • Microsoft WebView2
  • Java 大视界 -- 基于 Java 的大数据分布式计算在气象灾害预警与应急响应中的应用
  • 【lucene】SegmentInfos
  • 系统思考—啤酒游戏经营决策沙盘认证
  • 论文推荐|迁移学习+多模态特征融合
  • 二叉树的三种遍历方法
  • ZKmall开源商城的数据校验之道:用规范守护业务基石
  • 【论文笔记】STORYWRITER: A Multi-Agent Framework for Long Story Generation
  • lcx、netcat、powercat--安装、使用
  • [go] 桥接模式
  • 分布式存储与存储阵列:从传统到现代的存储革命
  • Tello无人机与LLM模型控制 ROS
  • 安全审计-iptales防火墙设置
  • 立体匹配中的稠密匹配和稀疏匹配
  • 教材采购管理系统(java)
  • 力扣(接雨水)——基于最高柱分割的双指针