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

工具测试 - 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.dtcms.com/a/336159.html

相关文章:

  • JavaScript 中constructor 属性的指向异常问题
  • Python实现区域生长和RANSAC聚类
  • 线程基本API
  • 输入坐标移动
  • 在线编程题目之小试牛刀
  • 多线程—飞机大战(加入排行榜功能版本)
  • 数字化转型成功案例:赋能供应链运输成本精细化管理
  • 网络编程3(网络层,数据链路层)
  • 批次号规则
  • Vue中v-show与v-if的区别
  • 【AI论文】序曲(PRELUDE):一项旨在考察对长文本语境进行全局理解与推理能力的基准测试
  • C语言私人学习笔记分享
  • STM32单片机学习日记
  • 第四章:大模型(LLM)】06.langchain原理-(7)LangChain 输出解析器(Output Parser)
  • 模型提取的相关经验
  • 库制作与原理(下)
  • 端到端测试:复杂系统的终极体检术
  • 【C2000】德州仪器C2000产品开发板的原理图如何找到?
  • 反向代理、负载均衡器与API网关选型决策
  • 《MutationObserver深度解构:重塑自动化视觉回归测试的底层逻辑》
  • B站 韩顺平 笔记 (Day 21)
  • [python学习记录2]变量
  • 【Unity3D实例-功能-拔枪】角色拔枪(二)分割上身和下身
  • vue封装请求拦截器 响应拦截器
  • 定时器输出PWM波配置(呼吸灯)
  • 平行双目视觉-动手学计算机视觉18
  • C++ Building Blocks 构建块 Or 构件块
  • SVN客户端下载与安装
  • 「数据获取」《中国教育统计年鉴》(1949-2023)(获取方式看绑定的资源)
  • 【嵌入式基础知识梳理#11】Modbus-RTU工业总线协议