chore: init monorepo snapshot
|
After Width: | Height: | Size: 96 KiB |
|
After Width: | Height: | Size: 34 KiB |
|
After Width: | Height: | Size: 51 KiB |
|
After Width: | Height: | Size: 72 KiB |
|
After Width: | Height: | Size: 55 KiB |
|
After Width: | Height: | Size: 64 KiB |
|
After Width: | Height: | Size: 75 KiB |
|
After Width: | Height: | Size: 56 KiB |
|
After Width: | Height: | Size: 28 KiB |
|
After Width: | Height: | Size: 64 KiB |
|
After Width: | Height: | Size: 88 KiB |
|
After Width: | Height: | Size: 76 KiB |
|
After Width: | Height: | Size: 110 KiB |
|
After Width: | Height: | Size: 79 KiB |
|
After Width: | Height: | Size: 104 KiB |
|
After Width: | Height: | Size: 72 KiB |
|
After Width: | Height: | Size: 87 KiB |
|
After Width: | Height: | Size: 201 KiB |
|
After Width: | Height: | Size: 261 KiB |
|
After Width: | Height: | Size: 261 KiB |
|
After Width: | Height: | Size: 53 KiB |
|
After Width: | Height: | Size: 145 KiB |
|
After Width: | Height: | Size: 130 KiB |
|
After Width: | Height: | Size: 95 KiB |
|
After Width: | Height: | Size: 110 KiB |
|
After Width: | Height: | Size: 102 KiB |
|
After Width: | Height: | Size: 101 KiB |
|
After Width: | Height: | Size: 214 KiB |
|
After Width: | Height: | Size: 151 KiB |
|
After Width: | Height: | Size: 83 KiB |
|
After Width: | Height: | Size: 89 KiB |
|
After Width: | Height: | Size: 147 KiB |
|
After Width: | Height: | Size: 108 KiB |
|
After Width: | Height: | Size: 81 KiB |
|
After Width: | Height: | Size: 85 KiB |
|
After Width: | Height: | Size: 129 KiB |
|
After Width: | Height: | Size: 35 KiB |
|
After Width: | Height: | Size: 249 KiB |
|
After Width: | Height: | Size: 255 KiB |
|
After Width: | Height: | Size: 107 KiB |
|
After Width: | Height: | Size: 125 KiB |
|
After Width: | Height: | Size: 180 KiB |
|
After Width: | Height: | Size: 105 KiB |
|
After Width: | Height: | Size: 236 KiB |
|
After Width: | Height: | Size: 177 KiB |
|
After Width: | Height: | Size: 77 KiB |
|
After Width: | Height: | Size: 118 KiB |
|
After Width: | Height: | Size: 94 KiB |
|
After Width: | Height: | Size: 133 KiB |
|
After Width: | Height: | Size: 161 KiB |
|
After Width: | Height: | Size: 190 KiB |
|
After Width: | Height: | Size: 263 KiB |
|
After Width: | Height: | Size: 264 KiB |
|
After Width: | Height: | Size: 261 KiB |
|
After Width: | Height: | Size: 286 KiB |
|
After Width: | Height: | Size: 50 KiB |
|
After Width: | Height: | Size: 136 KiB |
|
After Width: | Height: | Size: 110 KiB |
|
After Width: | Height: | Size: 133 KiB |
|
After Width: | Height: | Size: 185 KiB |
|
After Width: | Height: | Size: 92 KiB |
|
After Width: | Height: | Size: 246 KiB |
|
After Width: | Height: | Size: 71 KiB |
|
After Width: | Height: | Size: 72 KiB |
|
After Width: | Height: | Size: 500 KiB |
|
After Width: | Height: | Size: 62 KiB |
|
After Width: | Height: | Size: 92 KiB |
|
After Width: | Height: | Size: 276 KiB |
|
After Width: | Height: | Size: 67 KiB |
|
After Width: | Height: | Size: 14 KiB |
|
After Width: | Height: | Size: 74 KiB |
|
After Width: | Height: | Size: 71 KiB |
|
After Width: | Height: | Size: 72 KiB |
|
After Width: | Height: | Size: 70 KiB |
|
After Width: | Height: | Size: 63 KiB |
|
After Width: | Height: | Size: 23 KiB |
|
After Width: | Height: | Size: 33 KiB |
|
After Width: | Height: | Size: 89 KiB |
@@ -0,0 +1,2 @@
|
||||
<script type="module" src="https://gradio.s3-us-west-2.amazonaws.com/5.35.0/gradio.js"></script>
|
||||
<gradio-app src="https://opendatalab-mineru.hf.space"></gradio-app>
|
||||
@@ -0,0 +1,30 @@
|
||||
# Frequently Asked Questions
|
||||
|
||||
If your question is not listed, try using [DeepWiki](https://deepwiki.com/opendatalab/MinerU)'s AI assistant for common issues.
|
||||
|
||||
For unresolved problems, join our [Discord](https://discord.gg/Tdedn9GTXq) or [WeChat](https://mineru.net/community-portal/?aliasId=3c430f94) community for support.
|
||||
|
||||
??? question "Encountered the error `ImportError: libGL.so.1: cannot open shared object file: No such file or directory` in Ubuntu 22.04 on WSL2"
|
||||
|
||||
The `libgl` library is missing in Ubuntu 22.04 on WSL2. You can install the `libgl` library with the following command to resolve the issue:
|
||||
|
||||
```bash
|
||||
sudo apt-get install libgl1-mesa-glx
|
||||
```
|
||||
|
||||
Reference: [#388](https://github.com/opendatalab/MinerU/issues/388)
|
||||
|
||||
|
||||
??? question "Missing text information in parsing results when installing and using on Linux systems."
|
||||
|
||||
MinerU uses `pypdfium2` instead of `pymupdf` as the PDF page rendering engine in versions >=2.0 to resolve AGPLv3 license issues. On some Linux distributions, due to missing CJK fonts, some text may be lost during the process of rendering PDFs to images.
|
||||
To solve this problem, you can install the noto font package with the following commands, which are effective on Ubuntu/Debian systems:
|
||||
```bash
|
||||
sudo apt update
|
||||
sudo apt install fonts-noto-core
|
||||
sudo apt install fonts-noto-cjk
|
||||
fc-cache -fv
|
||||
```
|
||||
You can also directly use our [Docker deployment](../quick_start/docker_deployment.md) method to build the image, which includes the above font packages by default.
|
||||
|
||||
Reference: [#2915](https://github.com/opendatalab/MinerU/issues/2915)
|
||||
@@ -0,0 +1,70 @@
|
||||
<div align="center" xmlns="http://www.w3.org/1999/html">
|
||||
<!-- logo -->
|
||||
<p align="center">
|
||||
<img src="https://opendatalab.github.io/MinerU/images/MinerU-logo.png" width="300px" style="vertical-align:middle;">
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<!-- icon -->
|
||||
|
||||
[](https://github.com/opendatalab/MinerU)
|
||||
[](https://github.com/opendatalab/MinerU)
|
||||
[](https://github.com/opendatalab/MinerU/issues)
|
||||
[](https://github.com/opendatalab/MinerU/issues)
|
||||
[](https://pypi.org/project/mineru/)
|
||||
[](https://pypi.org/project/mineru/)
|
||||
[](https://pepy.tech/project/mineru)
|
||||
[](https://pepy.tech/project/mineru)
|
||||
[](https://mineru.net/OpenSourceTools/Extractor?source=github)
|
||||
[](https://huggingface.co/spaces/opendatalab/MinerU)
|
||||
[](https://www.modelscope.cn/studios/OpenDataLab/MinerU)
|
||||
[](https://colab.research.google.com/gist/myhloli/a3cb16570ab3cfeadf9d8f0ac91b4fca/mineru_demo.ipynb)
|
||||
[](https://arxiv.org/abs/2409.18839)
|
||||
[](https://arxiv.org/abs/2509.22186)
|
||||
[](https://deepwiki.com/opendatalab/MinerU)
|
||||
|
||||
<div align="center">
|
||||
<a href="https://trendshift.io/repositories/11174" target="_blank"><img src="https://trendshift.io/api/badge/repositories/11174" alt="opendatalab%2FMinerU | Trendshift" style="width: 250px; height: 55px;" width="250" height="55"/></a>
|
||||
|
||||
<!-- hot link -->
|
||||
|
||||
<p align="center">
|
||||
🚀<a href="https://mineru.net/?source=github">MinerU Official Website→✅ Zero-Install Online Version ✅ Full-Featured Client ✅ Developer API Online Access, skip deployment hassles, get all product formats with one click, go fast!</a>
|
||||
</p>
|
||||
|
||||
<!-- join us -->
|
||||
|
||||
<p align="center">
|
||||
👋 join us on <a href="https://discord.gg/Tdedn9GTXq" target="_blank">Discord</a> and <a href="https://mineru.net/community-portal/?aliasId=3c430f94" target="_blank">WeChat</a>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
## Project Introduction
|
||||
|
||||
MinerU is a tool that converts PDFs into machine-readable formats (e.g., markdown, JSON), allowing for easy extraction into any format.
|
||||
MinerU was born during the pre-training process of [InternLM](https://github.com/InternLM/InternLM). We focus on solving symbol conversion issues in scientific literature and hope to contribute to technological development in the era of large models.
|
||||
Compared to well-known commercial products domestically and internationally, MinerU is still young. If you encounter any issues or if the results are not as expected, please submit an issue on [GitHub Issues](https://github.com/opendatalab/MinerU/issues) and **attach the relevant PDF**.
|
||||
|
||||

|
||||
|
||||
|
||||
## Key Features
|
||||
|
||||
- Remove headers, footers, footnotes, page numbers and other elements to ensure semantic coherence
|
||||
- Output text in human reading order, suitable for single-column, multi-column and complex layouts
|
||||
- Retain the original document structure, including titles, paragraphs, lists, etc.
|
||||
- Extract images, image descriptions, tables, table titles and footnotes
|
||||
- Automatically identify and convert formulas in documents to LaTeX format
|
||||
- Automatically identify and convert tables in documents to HTML format
|
||||
- Automatically detect scanned PDFs and garbled PDFs, and enable OCR functionality
|
||||
- OCR supports detection and recognition of 109 languages
|
||||
- Support multiple output formats, such as multimodal and NLP Markdown, reading-order-sorted JSON, and information-rich intermediate formats
|
||||
- Support multiple visualization results, including layout visualization, span visualization, etc., for efficient confirmation of output effects and quality inspection
|
||||
- Support pure CPU environment operation, and support GPU(CUDA)/NPU(CANN)/MPS acceleration
|
||||
- Compatible with Windows, Linux and Mac platforms
|
||||
|
||||
|
||||
## User Guide
|
||||
|
||||
- [Quick Start Guide](./quick_start/index.md)
|
||||
- [Detailed Usage Instructions](./usage/index.md)
|
||||
@@ -0,0 +1,87 @@
|
||||
# Deploying MinerU with Docker
|
||||
|
||||
MinerU provides a convenient Docker deployment method, which helps quickly set up the environment and solve some tricky environment compatibility issues.
|
||||
|
||||
## Build Docker Image using Dockerfile
|
||||
|
||||
```bash
|
||||
wget https://gcore.jsdelivr.net/gh/opendatalab/MinerU@master/docker/global/Dockerfile
|
||||
docker build -t mineru-vllm:latest -f Dockerfile .
|
||||
```
|
||||
|
||||
> [!TIP]
|
||||
> The [Dockerfile](https://github.com/opendatalab/MinerU/blob/master/docker/global/Dockerfile) uses `vllm/vllm-openai:v0.10.1.1` as the base image by default. This version of vLLM v1 engine has limited support for GPU models.
|
||||
> If you cannot use vLLM accelerated inference on Turing and earlier architecture GPUs, you can resolve this issue by changing the base image to `vllm/vllm-openai:v0.10.2`.
|
||||
|
||||
## Docker Description
|
||||
|
||||
MinerU's Docker uses `vllm/vllm-openai` as the base image, so it includes the `vllm` inference acceleration framework and necessary dependencies by default. Therefore, on compatible devices, you can directly use `vllm` to accelerate VLM model inference.
|
||||
|
||||
> [!NOTE]
|
||||
> Requirements for using `vllm` to accelerate VLM model inference:
|
||||
>
|
||||
> - Device must have Turing architecture or later graphics cards with 8GB+ available VRAM.
|
||||
> - The host machine's graphics driver should support CUDA 12.8 or higher; You can check the driver version using the `nvidia-smi` command.
|
||||
> - Docker container must have access to the host machine's graphics devices.
|
||||
|
||||
## Start Docker Container
|
||||
|
||||
```bash
|
||||
docker run --gpus all \
|
||||
--shm-size 32g \
|
||||
-p 30000:30000 -p 7860:7860 -p 8000:8000 \
|
||||
--ipc=host \
|
||||
-it mineru-vllm:latest \
|
||||
/bin/bash
|
||||
```
|
||||
|
||||
After executing this command, you will enter the Docker container's interactive terminal with some ports mapped for potential services. You can directly run MinerU-related commands within the container to use MinerU's features.
|
||||
You can also directly start MinerU services by replacing `/bin/bash` with service startup commands. For detailed instructions, please refer to the [Start the service via command](https://opendatalab.github.io/MinerU/usage/quick_usage/#advanced-usage-via-api-webui-http-clientserver).
|
||||
|
||||
## Start Services Directly with Docker Compose
|
||||
|
||||
We provide a [compose.yaml](https://github.com/opendatalab/MinerU/blob/master/docker/compose.yaml) file that you can use to quickly start MinerU services.
|
||||
|
||||
```bash
|
||||
# Download compose.yaml file
|
||||
wget https://gcore.jsdelivr.net/gh/opendatalab/MinerU@master/docker/compose.yaml
|
||||
```
|
||||
|
||||
>[!NOTE]
|
||||
>
|
||||
>- The `compose.yaml` file contains configurations for multiple services of MinerU, you can choose to start specific services as needed.
|
||||
>- Different services might have additional parameter configurations, which you can view and edit in the `compose.yaml` file.
|
||||
>- Due to the pre-allocation of GPU memory by the `vllm` inference acceleration framework, you may not be able to run multiple `vllm` services simultaneously on the same machine. Therefore, ensure that other services that might use GPU memory have been stopped before starting the `vlm-vllm-server` service or using the `vlm-vllm-engine` backend.
|
||||
|
||||
---
|
||||
|
||||
### Start vllm-server service
|
||||
connect to `vllm-server` via `vlm-http-client` backend
|
||||
```bash
|
||||
docker compose -f compose.yaml --profile vllm-server up -d
|
||||
```
|
||||
>[!TIP]
|
||||
>In another terminal, connect to vllm server via http client (only requires CPU and network, no vllm environment needed)
|
||||
> ```bash
|
||||
> mineru -p <input_path> -o <output_path> -b vlm-http-client -u http://<server_ip>:30000
|
||||
> ```
|
||||
|
||||
---
|
||||
|
||||
### Start Web API service
|
||||
```bash
|
||||
docker compose -f compose.yaml --profile api up -d
|
||||
```
|
||||
>[!TIP]
|
||||
>Access `http://<server_ip>:8000/docs` in your browser to view the API documentation.
|
||||
|
||||
---
|
||||
|
||||
### Start Gradio WebUI service
|
||||
```bash
|
||||
docker compose -f compose.yaml --profile gradio up -d
|
||||
```
|
||||
>[!TIP]
|
||||
>
|
||||
>- Access `http://<server_ip>:7860` in your browser to use the Gradio WebUI.
|
||||
>- Access `http://<server_ip>:7860/?view=api` to use the Gradio API.
|
||||
@@ -0,0 +1,29 @@
|
||||
# MinerU Extension Modules Installation Guide
|
||||
MinerU supports installing extension modules on demand based on different needs to enhance functionality or support specific model backends.
|
||||
|
||||
## Common Scenarios
|
||||
|
||||
### Core Functionality Installation
|
||||
The `core` module is the core dependency of MinerU, containing all functional modules except `vllm`. Installing this module ensures the basic functionality of MinerU works properly.
|
||||
```bash
|
||||
uv pip install "mineru[core]"
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Using `vllm` to Accelerate VLM Model Inference
|
||||
The `vllm` module provides acceleration support for VLM model inference, suitable for graphics cards with Turing architecture and later (8GB+ VRAM). Installing this module can significantly improve model inference speed.
|
||||
In the configuration, `all` includes both `core` and `vllm` modules, so `mineru[all]` and `mineru[core,vllm]` are equivalent.
|
||||
```bash
|
||||
uv pip install "mineru[all]"
|
||||
```
|
||||
> [!TIP]
|
||||
> If exceptions occur during installation of the complete package including vllm, please refer to the [vllm official documentation](https://docs.vllm.ai/en/latest/getting_started/installation/index.html) to try to resolve the issue, or directly use the [Docker](./docker_deployment.md) deployment method.
|
||||
|
||||
---
|
||||
|
||||
### Installing Lightweight Client to Connect to vllm-server
|
||||
If you need to install a lightweight client on edge devices to connect to `vllm-server`, you can install the basic mineru package, which is very lightweight and suitable for devices with only CPU and network connectivity.
|
||||
```bash
|
||||
uv pip install mineru
|
||||
```
|
||||
@@ -0,0 +1,129 @@
|
||||
# Quick Start
|
||||
|
||||
If you encounter any installation issues, please check the [FAQ](../faq/index.md) first.
|
||||
|
||||
## Online Experience
|
||||
|
||||
### Official online web application
|
||||
The official online version has the same functionality as the client, with a beautiful interface and rich features, requires login to use
|
||||
|
||||
- [](https://mineru.net/OpenSourceTools/Extractor?source=github)
|
||||
|
||||
### Gradio-based online demo
|
||||
A WebUI developed based on Gradio, with a simple interface and only core parsing functionality, no login required
|
||||
|
||||
- [](https://www.modelscope.cn/studios/OpenDataLab/MinerU)
|
||||
- [](https://huggingface.co/spaces/opendatalab/MinerU)
|
||||
|
||||
## Local Deployment
|
||||
|
||||
> [!WARNING]
|
||||
> **Prerequisites - Hardware and Software Environment Support**
|
||||
>
|
||||
> To ensure the stability and reliability of the project, we have optimized and tested only specific hardware and software environments during development. This ensures that users can achieve optimal performance and encounter the fewest compatibility issues when deploying and running the project on recommended system configurations.
|
||||
>
|
||||
> By concentrating our resources and efforts on mainstream environments, our team can more efficiently resolve potential bugs and timely develop new features.
|
||||
>
|
||||
> In non-mainstream environments, due to the diversity of hardware and software configurations, as well as compatibility issues with third-party dependencies, we cannot guarantee 100% usability of the project. Therefore, for users who wish to use this project in non-recommended environments, we suggest carefully reading the documentation and FAQ first, as most issues have corresponding solutions in the FAQ. Additionally, we encourage community feedback on issues so that we can gradually expand our support range.
|
||||
|
||||
<table border="1">
|
||||
<thead>
|
||||
<tr>
|
||||
<th rowspan="2">Parsing Backend</th>
|
||||
<th rowspan="2">pipeline <br> (Accuracy<sup>1</sup> 82+)</th>
|
||||
<th colspan="4" style="text-align:center;">vlm (Accuracy<sup>1</sup> 90+)</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>transformers</th>
|
||||
<th>mlx-engine</th>
|
||||
<th>vllm-engine / <br>vllm-async-engine</th>
|
||||
<th>http-client</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<th>Backend Features</th>
|
||||
<td>Fast, no hallucinations</td>
|
||||
<td>Good compatibility, <br>but slower</td>
|
||||
<td>Faster than transformers</td>
|
||||
<td>Fast, compatible with the vLLM ecosystem</td>
|
||||
<td>Suitable for OpenAI-compatible servers<sup>5</sup></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>Operating System</th>
|
||||
<td colspan="2" style="text-align:center;">Linux<sup>2</sup> / Windows / macOS</td>
|
||||
<td style="text-align:center;">macOS<sup>3</sup></td>
|
||||
<td style="text-align:center;">Linux<sup>2</sup> / Windows<sup>4</sup> </td>
|
||||
<td>Any</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>CPU inference support</th>
|
||||
<td colspan="2" style="text-align:center;">✅</td>
|
||||
<td colspan="2" style="text-align:center;">❌</td>
|
||||
<td>Not required</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>GPU Requirements</th><td colspan="2" style="text-align:center;">Volta or later architectures, 6 GB VRAM or more, or Apple Silicon</td>
|
||||
<td>Apple Silicon</td>
|
||||
<td>Volta or later architectures, 8 GB VRAM or more</td>
|
||||
<td>Not required</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>Memory Requirements</th>
|
||||
<td colspan="4" style="text-align:center;">Minimum 16 GB, 32 GB recommended</td>
|
||||
<td>8 GB</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>Disk Space Requirements</th>
|
||||
<td colspan="4" style="text-align:center;">20 GB or more, SSD recommended</td>
|
||||
<td>2 GB</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>Python Version</th>
|
||||
<td colspan="5" style="text-align:center;">3.10-3.13</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<sup>1</sup> Accuracy metric is the End-to-End Evaluation Overall score of OmniDocBench (v1.5), tested on the latest `MinerU` version.
|
||||
<sup>2</sup> Linux supports only distributions released in 2019 or later.
|
||||
<sup>3</sup> MLX requires macOS 13.5 or later, recommended for use with version 14.0 or higher.
|
||||
<sup>4</sup> Windows vLLM support via WSL2(Windows Subsystem for Linux).
|
||||
<sup>5</sup> Servers compatible with the OpenAI API, such as local or remote model services deployed via inference frameworks like `vLLM`, `SGLang`, or `LMDeploy`.
|
||||
|
||||
### Install MinerU
|
||||
|
||||
#### Install MinerU using pip or uv
|
||||
```bash
|
||||
pip install --upgrade pip
|
||||
pip install uv
|
||||
uv pip install -U "mineru[core]"
|
||||
```
|
||||
|
||||
#### Install MinerU from source code
|
||||
```bash
|
||||
git clone https://github.com/opendatalab/MinerU.git
|
||||
cd MinerU
|
||||
uv pip install -e .[core]
|
||||
```
|
||||
|
||||
> [!TIP]
|
||||
> `mineru[core]` includes all core features except `vllm` acceleration, compatible with Windows / Linux / macOS systems, suitable for most users.
|
||||
> If you need to use `vllm` acceleration for VLM model inference or install a lightweight client on edge devices, please refer to the documentation [Extension Modules Installation Guide](./extension_modules.md).
|
||||
|
||||
---
|
||||
|
||||
#### Deploy MinerU using Docker
|
||||
MinerU provides a convenient Docker deployment method, which helps quickly set up the environment and solve some tricky environment compatibility issues.
|
||||
You can get the [Docker Deployment Instructions](./docker_deployment.md) in the documentation.
|
||||
|
||||
---
|
||||
|
||||
### Using MinerU
|
||||
|
||||
The simplest command line invocation is:
|
||||
```bash
|
||||
mineru -p <input_path> -o <output_path>
|
||||
```
|
||||
|
||||
You can use MinerU for PDF parsing through various methods such as command line, API, and WebUI. For detailed instructions, please refer to the [Usage Guide](../usage/index.md).
|
||||
@@ -0,0 +1,712 @@
|
||||
# MinerU Output Files Documentation
|
||||
|
||||
## Overview
|
||||
|
||||
After executing the `mineru` command, in addition to the main markdown file output, multiple auxiliary files are generated for debugging, quality inspection, and further processing. These files include:
|
||||
|
||||
- **Visual debugging files**: Help users intuitively understand the document parsing process and results
|
||||
- **Structured data files**: Contain detailed parsing data for secondary development
|
||||
|
||||
The following sections provide detailed descriptions of each file's purpose and format.
|
||||
|
||||
## Visual Debugging Files
|
||||
|
||||
### Layout Analysis File (layout.pdf)
|
||||
|
||||
**File naming format**: `{original_filename}_layout.pdf`
|
||||
|
||||
**Functionality**:
|
||||
|
||||
- Visualizes layout analysis results for each page
|
||||
- Numbers in the top-right corner of each detection box indicate reading order
|
||||
- Different background colors distinguish different types of content blocks
|
||||
|
||||
**Use cases**:
|
||||
|
||||
- Check if layout analysis is correct
|
||||
- Verify if reading order is reasonable
|
||||
- Debug layout-related issues
|
||||
|
||||

|
||||
|
||||
### Text Spans File (spans.pdf)
|
||||
|
||||
> [!NOTE]
|
||||
> Only applicable to pipeline backend
|
||||
|
||||
**File naming format**: `{original_filename}_spans.pdf`
|
||||
|
||||
**Functionality**:
|
||||
|
||||
- Uses different colored line boxes to annotate page content based on span type
|
||||
- Used for quality inspection and issue troubleshooting
|
||||
|
||||
**Use cases**:
|
||||
|
||||
- Quickly troubleshoot text loss issues
|
||||
- Check inline formula recognition
|
||||
- Verify text segmentation accuracy
|
||||
|
||||

|
||||
|
||||
## Structured Data Files
|
||||
|
||||
> [!IMPORTANT]
|
||||
> The VLM backend output has significant changes in version 2.5 and is not backward-compatible with the pipeline backend. If you plan to build secondary development on structured outputs, please read this document carefully.
|
||||
|
||||
### Pipeline Backend Output Results
|
||||
|
||||
#### Model Inference Results (model.json)
|
||||
|
||||
**File naming format**: `{original_filename}_model.json`
|
||||
|
||||
##### Data Structure Definition
|
||||
|
||||
```python
|
||||
from pydantic import BaseModel, Field
|
||||
from enum import IntEnum
|
||||
|
||||
class CategoryType(IntEnum):
|
||||
"""Content category enumeration"""
|
||||
title = 0 # Title
|
||||
plain_text = 1 # Text
|
||||
abandon = 2 # Including headers, footers, page numbers, and page annotations
|
||||
figure = 3 # Image
|
||||
figure_caption = 4 # Image caption
|
||||
table = 5 # Table
|
||||
table_caption = 6 # Table caption
|
||||
table_footnote = 7 # Table footnote
|
||||
isolate_formula = 8 # Interline formula
|
||||
formula_caption = 9 # Interline formula number
|
||||
embedding = 13 # Inline formula
|
||||
isolated = 14 # Interline formula
|
||||
text = 15 # OCR recognition result
|
||||
|
||||
class PageInfo(BaseModel):
|
||||
"""Page information"""
|
||||
page_no: int = Field(description="Page number, first page is 0", ge=0)
|
||||
height: int = Field(description="Page height", gt=0)
|
||||
width: int = Field(description="Page width", ge=0)
|
||||
|
||||
class ObjectInferenceResult(BaseModel):
|
||||
"""Object recognition result"""
|
||||
category_id: CategoryType = Field(description="Category", ge=0)
|
||||
poly: list[float] = Field(description="Quadrilateral coordinates, format: [x0,y0,x1,y1,x2,y2,x3,y3]")
|
||||
score: float = Field(description="Confidence score of inference result")
|
||||
latex: str | None = Field(description="LaTeX parsing result", default=None)
|
||||
html: str | None = Field(description="HTML parsing result", default=None)
|
||||
|
||||
class PageInferenceResults(BaseModel):
|
||||
"""Page inference results"""
|
||||
layout_dets: list[ObjectInferenceResult] = Field(description="Page recognition results")
|
||||
page_info: PageInfo = Field(description="Page metadata")
|
||||
|
||||
# Complete inference results
|
||||
inference_result: list[PageInferenceResults] = []
|
||||
```
|
||||
|
||||
##### Coordinate System Description
|
||||
|
||||
`poly` coordinate format: `[x0, y0, x1, y1, x2, y2, x3, y3]`
|
||||
|
||||
- Represents coordinates of top-left, top-right, bottom-right, bottom-left points respectively
|
||||
- Coordinate origin is at the top-left corner of the page
|
||||
|
||||

|
||||
|
||||
##### Sample Data
|
||||
|
||||
```json
|
||||
[
|
||||
{
|
||||
"layout_dets": [
|
||||
{
|
||||
"category_id": 2,
|
||||
"poly": [
|
||||
99.1906967163086,
|
||||
100.3119125366211,
|
||||
730.3707885742188,
|
||||
100.3119125366211,
|
||||
730.3707885742188,
|
||||
245.81326293945312,
|
||||
99.1906967163086,
|
||||
245.81326293945312
|
||||
],
|
||||
"score": 0.9999997615814209
|
||||
}
|
||||
],
|
||||
"page_info": {
|
||||
"page_no": 0,
|
||||
"height": 2339,
|
||||
"width": 1654
|
||||
}
|
||||
},
|
||||
{
|
||||
"layout_dets": [
|
||||
{
|
||||
"category_id": 5,
|
||||
"poly": [
|
||||
99.13092803955078,
|
||||
2210.680419921875,
|
||||
497.3183898925781,
|
||||
2210.680419921875,
|
||||
497.3183898925781,
|
||||
2264.78076171875,
|
||||
99.13092803955078,
|
||||
2264.78076171875
|
||||
],
|
||||
"score": 0.9999997019767761
|
||||
}
|
||||
],
|
||||
"page_info": {
|
||||
"page_no": 1,
|
||||
"height": 2339,
|
||||
"width": 1654
|
||||
}
|
||||
}
|
||||
]
|
||||
```
|
||||
|
||||
#### Intermediate Processing Results (middle.json)
|
||||
|
||||
**File naming format**: `{original_filename}_middle.json`
|
||||
|
||||
##### Top-level Structure
|
||||
|
||||
| Field Name | Type | Description |
|
||||
|------------|------|-------------|
|
||||
| `pdf_info` | `list[dict]` | Array of parsing results for each page |
|
||||
| `_backend` | `string` | Parsing mode: `pipeline` or `vlm` |
|
||||
| `_version_name` | `string` | MinerU version number |
|
||||
|
||||
##### Page Information Structure (pdf_info)
|
||||
|
||||
| Field Name | Description |
|
||||
|------------|-------------|
|
||||
| `preproc_blocks` | Unsegmented intermediate results after PDF preprocessing |
|
||||
| `page_idx` | Page number, starting from 0 |
|
||||
| `page_size` | Page width and height `[width, height]` |
|
||||
| `images` | Image block information list |
|
||||
| `tables` | Table block information list |
|
||||
| `interline_equations` | Interline formula block information list |
|
||||
| `discarded_blocks` | Block information to be discarded |
|
||||
| `para_blocks` | Content block results after segmentation |
|
||||
|
||||
##### Block Structure Hierarchy
|
||||
|
||||
```
|
||||
Level 1 blocks (table | image)
|
||||
└── Level 2 blocks
|
||||
└── Lines
|
||||
└── Spans
|
||||
```
|
||||
|
||||
##### Level 1 Block Fields
|
||||
|
||||
| Field Name | Description |
|
||||
|------------|-------------|
|
||||
| `type` | Block type: `table` or `image` |
|
||||
| `bbox` | Rectangular box coordinates of the block `[x0, y0, x1, y1]` |
|
||||
| `blocks` | List of contained level 2 blocks |
|
||||
|
||||
##### Level 2 Block Fields
|
||||
|
||||
| Field Name | Description |
|
||||
|------------|-------------|
|
||||
| `type` | Block type (see table below) |
|
||||
| `bbox` | Rectangular box coordinates of the block |
|
||||
| `lines` | List of contained line information |
|
||||
|
||||
##### Level 2 Block Types
|
||||
|
||||
| Type | Description |
|
||||
|------|-------------|
|
||||
| `image_body` | Image body |
|
||||
| `image_caption` | Image caption text |
|
||||
| `image_footnote` | Image footnote |
|
||||
| `table_body` | Table body |
|
||||
| `table_caption` | Table caption text |
|
||||
| `table_footnote` | Table footnote |
|
||||
| `text` | Text block |
|
||||
| `title` | Title block |
|
||||
| `index` | Index block |
|
||||
| `list` | List block |
|
||||
| `interline_equation` | Interline formula block |
|
||||
|
||||
##### Line and Span Structure
|
||||
|
||||
**Line fields**:
|
||||
- `bbox`: Rectangular box coordinates of the line
|
||||
- `spans`: List of contained spans
|
||||
|
||||
**Span fields**:
|
||||
- `bbox`: Rectangular box coordinates of the span
|
||||
- `type`: Span type (`image`, `table`, `text`, `inline_equation`, `interline_equation`)
|
||||
- `content` | `img_path`: Text content or image path
|
||||
|
||||
##### Sample Data
|
||||
|
||||
```json
|
||||
{
|
||||
"pdf_info": [
|
||||
{
|
||||
"preproc_blocks": [
|
||||
{
|
||||
"type": "text",
|
||||
"bbox": [
|
||||
52,
|
||||
61.956024169921875,
|
||||
294,
|
||||
82.99800872802734
|
||||
],
|
||||
"lines": [
|
||||
{
|
||||
"bbox": [
|
||||
52,
|
||||
61.956024169921875,
|
||||
294,
|
||||
72.0000228881836
|
||||
],
|
||||
"spans": [
|
||||
{
|
||||
"bbox": [
|
||||
54.0,
|
||||
61.956024169921875,
|
||||
296.2261657714844,
|
||||
72.0000228881836
|
||||
],
|
||||
"content": "dependent on the service headway and the reliability of the departure ",
|
||||
"type": "text",
|
||||
"score": 1.0
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"layout_bboxes": [
|
||||
{
|
||||
"layout_bbox": [
|
||||
52,
|
||||
61,
|
||||
294,
|
||||
731
|
||||
],
|
||||
"layout_label": "V",
|
||||
"sub_layout": []
|
||||
}
|
||||
],
|
||||
"page_idx": 0,
|
||||
"page_size": [
|
||||
612.0,
|
||||
792.0
|
||||
],
|
||||
"_layout_tree": [],
|
||||
"images": [],
|
||||
"tables": [],
|
||||
"interline_equations": [],
|
||||
"discarded_blocks": [],
|
||||
"para_blocks": [
|
||||
{
|
||||
"type": "text",
|
||||
"bbox": [
|
||||
52,
|
||||
61.956024169921875,
|
||||
294,
|
||||
82.99800872802734
|
||||
],
|
||||
"lines": [
|
||||
{
|
||||
"bbox": [
|
||||
52,
|
||||
61.956024169921875,
|
||||
294,
|
||||
72.0000228881836
|
||||
],
|
||||
"spans": [
|
||||
{
|
||||
"bbox": [
|
||||
54.0,
|
||||
61.956024169921875,
|
||||
296.2261657714844,
|
||||
72.0000228881836
|
||||
],
|
||||
"content": "dependent on the service headway and the reliability of the departure ",
|
||||
"type": "text",
|
||||
"score": 1.0
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"_backend": "pipeline",
|
||||
"_version_name": "0.6.1"
|
||||
}
|
||||
```
|
||||
|
||||
#### Content List (content_list.json)
|
||||
|
||||
**File naming format**: `{original_filename}_content_list.json`
|
||||
|
||||
##### Functionality
|
||||
|
||||
This is a simplified version of `middle.json` that stores all readable content blocks in reading order as a flat structure, removing complex layout information for easier subsequent processing.
|
||||
|
||||
##### Content Types
|
||||
|
||||
| Type | Description |
|
||||
|------|-------------|
|
||||
| `image` | Image |
|
||||
| `table` | Table |
|
||||
| `text` | Text/Title |
|
||||
| `equation` | Interline formula |
|
||||
|
||||
##### Text Level Identification
|
||||
|
||||
Text levels are distinguished through the `text_level` field:
|
||||
|
||||
- No `text_level` or `text_level: 0`: Body text
|
||||
- `text_level: 1`: Level 1 heading
|
||||
- `text_level: 2`: Level 2 heading
|
||||
- And so on...
|
||||
|
||||
##### Common Fields
|
||||
|
||||
- All content blocks include a `page_idx` field indicating the page number (starting from 0).
|
||||
- All content blocks include a `bbox` field representing the bounding box coordinates of the content block `[x0, y0, x1, y1]`, mapped to a range of 0-1000.
|
||||
|
||||
##### Sample Data
|
||||
|
||||
```json
|
||||
[
|
||||
{
|
||||
"type": "text",
|
||||
"text": "The response of flow duration curves to afforestation ",
|
||||
"text_level": 1,
|
||||
"bbox": [
|
||||
62,
|
||||
480,
|
||||
946,
|
||||
904
|
||||
],
|
||||
"page_idx": 0
|
||||
},
|
||||
{
|
||||
"type": "image",
|
||||
"img_path": "images/a8ecda1c69b27e4f79fce1589175a9d721cbdc1cf78b4cc06a015f3746f6b9d8.jpg",
|
||||
"image_caption": [
|
||||
"Fig. 1. Annual flow duration curves of daily flows from Pine Creek, Australia, 1989–2000. "
|
||||
],
|
||||
"image_footnote": [],
|
||||
"bbox": [
|
||||
62,
|
||||
480,
|
||||
946,
|
||||
904
|
||||
],
|
||||
"page_idx": 1
|
||||
},
|
||||
{
|
||||
"type": "equation",
|
||||
"img_path": "images/181ea56ef185060d04bf4e274685f3e072e922e7b839f093d482c29bf89b71e8.jpg",
|
||||
"text": "$$\nQ _ { \\% } = f ( P ) + g ( T )\n$$",
|
||||
"text_format": "latex",
|
||||
"bbox": [
|
||||
62,
|
||||
480,
|
||||
946,
|
||||
904
|
||||
],
|
||||
"page_idx": 2
|
||||
},
|
||||
{
|
||||
"type": "table",
|
||||
"img_path": "images/e3cb413394a475e555807ffdad913435940ec637873d673ee1b039e3bc3496d0.jpg",
|
||||
"table_caption": [
|
||||
"Table 2 Significance of the rainfall and time terms "
|
||||
],
|
||||
"table_footnote": [
|
||||
"indicates that the rainfall term was significant at the $5 \\%$ level, $T$ indicates that the time term was significant at the $5 \\%$ level, \\* represents significance at the $10 \\%$ level, and na denotes too few data points for meaningful analysis. "
|
||||
],
|
||||
"table_body": "<html><body><table><tr><td rowspan=\"2\">Site</td><td colspan=\"10\">Percentile</td></tr><tr><td>10</td><td>20</td><td>30</td><td>40</td><td>50</td><td>60</td><td>70</td><td>80</td><td>90</td><td>100</td></tr><tr><td>Traralgon Ck</td><td>P</td><td>P,*</td><td>P</td><td>P</td><td>P,</td><td>P,</td><td>P,</td><td>P,</td><td>P</td><td>P</td></tr><tr><td>Redhill</td><td>P,T</td><td>P,T</td><td>,*</td><td>**</td><td>P.T</td><td>P,*</td><td>P*</td><td>P*</td><td>*</td><td>,*</td></tr><tr><td>Pine Ck</td><td></td><td>P,T</td><td>P,T</td><td>P,T</td><td>P,T</td><td>T</td><td>T</td><td>T</td><td>na</td><td>na</td></tr><tr><td>Stewarts Ck 5</td><td>P,T</td><td>P,T</td><td>P,T</td><td>P,T</td><td>P.T</td><td>P.T</td><td>P,T</td><td>na</td><td>na</td><td>na</td></tr><tr><td>Glendhu 2</td><td>P</td><td>P,T</td><td>P,*</td><td>P,T</td><td>P.T</td><td>P,ns</td><td>P,T</td><td>P,T</td><td>P,T</td><td>P,T</td></tr><tr><td>Cathedral Peak 2</td><td>P,T</td><td>P,T</td><td>P,T</td><td>P,T</td><td>P,T</td><td>*,T</td><td>P,T</td><td>P,T</td><td>P,T</td><td>T</td></tr><tr><td>Cathedral Peak 3</td><td>P.T</td><td>P.T</td><td>P,T</td><td>P,T</td><td>P,T</td><td>T</td><td>P,T</td><td>P,T</td><td>P,T</td><td>T</td></tr><tr><td>Lambrechtsbos A</td><td>P,T</td><td>P</td><td>P</td><td>P,T</td><td>*,T</td><td>*,T</td><td>*,T</td><td>*,T</td><td>*,T</td><td>T</td></tr><tr><td>Lambrechtsbos B</td><td>P,T</td><td>P,T</td><td>P,T</td><td>P,T</td><td>P,T</td><td>P,T</td><td>P,T</td><td>P,T</td><td>T</td><td>T</td></tr><tr><td>Biesievlei</td><td>P,T</td><td>P.T</td><td>P,T</td><td>P,T</td><td>*,T</td><td>*,T</td><td>T</td><td>T</td><td>P,T</td><td>P,T</td></tr></table></body></html>",
|
||||
"bbox": [
|
||||
62,
|
||||
480,
|
||||
946,
|
||||
904
|
||||
],
|
||||
"page_idx": 5
|
||||
}
|
||||
]
|
||||
```
|
||||
|
||||
### VLM Backend Output Results
|
||||
|
||||
#### Model Inference Results (model.json)
|
||||
|
||||
**File naming format**: `{original_filename}_model.json`
|
||||
|
||||
##### File format description
|
||||
- Two-level nested list: outer list = pages; inner list = content blocks of that page
|
||||
- Each block is a dict with at least: `type`, `bbox`, `angle`, `content` (some types add extra fields like `score`, `block_tags`, `content_tags`, `format`)
|
||||
- Designed for direct, raw model inspection
|
||||
|
||||
##### Supported content types (type field values)
|
||||
```json
|
||||
{
|
||||
"text": "Plain text",
|
||||
"title": "Title",
|
||||
"equation": "Display (interline) formula",
|
||||
"image": "Image",
|
||||
"image_caption": "Image caption",
|
||||
"image_footnote": "Image footnote",
|
||||
"table": "Table",
|
||||
"table_caption": "Table caption",
|
||||
"table_footnote": "Table footnote",
|
||||
"phonetic": "Phonetic annotation",
|
||||
"code": "Code block",
|
||||
"code_caption": "Code caption",
|
||||
"ref_text": "Reference / citation entry",
|
||||
"algorithm": "Algorithm block (treated as code subtype)",
|
||||
"list": "List container",
|
||||
"header": "Page header",
|
||||
"footer": "Page footer",
|
||||
"page_number": "Page number",
|
||||
"aside_text": "Side / margin note",
|
||||
"page_footnote": "Page footnote"
|
||||
}
|
||||
```
|
||||
|
||||
##### Coordinate system
|
||||
- `bbox` = `[x0, y0, x1, y1]` (top-left, bottom-right)
|
||||
- Origin at top-left of the page
|
||||
- All coordinates are normalized percentages in `[0,1]`
|
||||
|
||||
##### Sample data
|
||||
```json
|
||||
[
|
||||
[
|
||||
{
|
||||
"type": "header",
|
||||
"bbox": [0.077, 0.095, 0.18, 0.181],
|
||||
"angle": 0,
|
||||
"score": null,
|
||||
"block_tags": null,
|
||||
"content": "ELSEVIER",
|
||||
"format": null,
|
||||
"content_tags": null
|
||||
},
|
||||
{
|
||||
"type": "title",
|
||||
"bbox": [0.157, 0.228, 0.833, 0.253],
|
||||
"angle": 0,
|
||||
"score": null,
|
||||
"block_tags": null,
|
||||
"content": "The response of flow duration curves to afforestation",
|
||||
"format": null,
|
||||
"content_tags": null
|
||||
}
|
||||
]
|
||||
]
|
||||
```
|
||||
|
||||
#### Intermediate Processing Results (middle.json)
|
||||
|
||||
**File naming format**: `{original_filename}_middle.json`
|
||||
|
||||
Structure is broadly similar to the pipeline backend, but with these differences:
|
||||
|
||||
- `list` becomes a second‑level block, a new field `sub_type` distinguishes list categories:
|
||||
* `text`: ordinary list
|
||||
* `ref_text`: reference / bibliography style list
|
||||
- New `code` block type with `sub_type`(a code block always has at least a `code_body`, it may optionally have a `code_caption`):
|
||||
* `code`
|
||||
* `algorithm`
|
||||
- `discarded_blocks` may contain additional types:
|
||||
* `header`
|
||||
* `footer`
|
||||
* `page_number`
|
||||
* `aside_text`
|
||||
* `page_footnote`
|
||||
- All blocks include an `angle` field indicating rotation (one of `0, 90, 180, 270`).
|
||||
|
||||
##### Examples
|
||||
- Example: list block
|
||||
```json
|
||||
{
|
||||
"bbox": [174,155,818,333],
|
||||
"type": "list",
|
||||
"angle": 0,
|
||||
"index": 11,
|
||||
"blocks": [
|
||||
{
|
||||
"bbox": [174,157,311,175],
|
||||
"type": "text",
|
||||
"angle": 0,
|
||||
"lines": [
|
||||
{
|
||||
"bbox": [174,157,311,175],
|
||||
"spans": [
|
||||
{
|
||||
"bbox": [174,157,311,175],
|
||||
"type": "text",
|
||||
"content": "H.1 Introduction"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"index": 3
|
||||
},
|
||||
{
|
||||
"bbox": [175,182,464,229],
|
||||
"type": "text",
|
||||
"angle": 0,
|
||||
"lines": [
|
||||
{
|
||||
"bbox": [175,182,464,229],
|
||||
"spans": [
|
||||
{
|
||||
"bbox": [175,182,464,229],
|
||||
"type": "text",
|
||||
"content": "H.2 Example: Divide by Zero without Exception Handling"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"index": 4
|
||||
}
|
||||
],
|
||||
"sub_type": "text"
|
||||
}
|
||||
```
|
||||
|
||||
- Example: code block with optional caption:
|
||||
```json
|
||||
{
|
||||
"type": "code",
|
||||
"bbox": [114,780,885,1231],
|
||||
"blocks": [
|
||||
{
|
||||
"bbox": [114,780,885,1231],
|
||||
"lines": [
|
||||
{
|
||||
"bbox": [114,780,885,1231],
|
||||
"spans": [
|
||||
{
|
||||
"bbox": [114,780,885,1231],
|
||||
"type": "text",
|
||||
"content": "1 // Fig. H.1: DivideByZeroNoExceptionHandling.java \n2 // Integer division without exception handling. \n3 import java.util.Scanner; \n4 \n5 public class DivideByZeroNoExceptionHandling \n6 { \n7 // demonstrates throwing an exception when a divide-by-zero occurs \n8 public static int quotient( int numerator, int denominator ) \n9 { \n10 return numerator / denominator; // possible division by zero \n11 } // end method quotient \n12 \n13 public static void main(String[] args) \n14 { \n15 Scanner scanner = new Scanner(System.in); // scanner for input \n16 \n17 System.out.print(\"Please enter an integer numerator: \"); \n18 int numerator = scanner.nextInt(); \n19 System.out.print(\"Please enter an integer denominator: \"); \n20 int denominator = scanner.nextInt(); \n21"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"index": 17,
|
||||
"angle": 0,
|
||||
"type": "code_body"
|
||||
},
|
||||
{
|
||||
"bbox": [867,160,1280,189],
|
||||
"lines": [
|
||||
{
|
||||
"bbox": [867,160,1280,189],
|
||||
"spans": [
|
||||
{
|
||||
"bbox": [867,160,1280,189],
|
||||
"type": "text",
|
||||
"content": "Algorithm 1 Modules for MCTSteg"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"index": 19,
|
||||
"angle": 0,
|
||||
"type": "code_caption"
|
||||
}
|
||||
],
|
||||
"index": 17,
|
||||
"sub_type": "code"
|
||||
}
|
||||
```
|
||||
|
||||
#### Content List (content_list.json)
|
||||
|
||||
**File naming format**: `{original_filename}_content_list.json`
|
||||
|
||||
Based on the pipeline format, with these VLM-specific extensions:
|
||||
|
||||
- New `code` type with `sub_type` (`code` | `algorithm`):
|
||||
* Fields: `code_body` (string), optional `code_caption` (list of strings)
|
||||
- New `list` type with `sub_type` (`text` | `ref_text`):
|
||||
* Field: `list_items` (array of strings)
|
||||
- All `discarded_blocks` entries are also output (e.g., headers, footers, page numbers, margin notes, page footnotes).
|
||||
- Existing types (`image`, `table`, `text`, `equation`) remain unchanged.
|
||||
- `bbox` still uses the 0–1000 normalized coordinate mapping.
|
||||
|
||||
|
||||
##### Examples
|
||||
Example: code (algorithm) entry
|
||||
```json
|
||||
{
|
||||
"type": "code",
|
||||
"sub_type": "algorithm",
|
||||
"code_caption": ["Algorithm 1 Modules for MCTSteg"],
|
||||
"code_body": "1: function GETCOORDINATE(d) \n2: $x \\gets d / l$ , $y \\gets d$ mod $l$ \n3: return $(x, y)$ \n4: end function \n5: function BESTCHILD(v) \n6: $C \\gets$ child set of $v$ \n7: $v' \\gets \\arg \\max_{c \\in C} \\mathrm{UCTScore}(c)$ \n8: $v'.n \\gets v'.n + 1$ \n9: return $v'$ \n10: end function \n11: function BACK PROPAGATE(v) \n12: Calculate $R$ using Equation 11 \n13: while $v$ is not a root node do \n14: $v.r \\gets v.r + R$ , $v \\gets v.p$ \n15: end while \n16: end function \n17: function RANDOMSEARCH(v) \n18: while $v$ is not a leaf node do \n19: Randomly select an untried action $a \\in A(v)$ \n20: Create a new node $v'$ \n21: $(x, y) \\gets \\mathrm{GETCOORDINATE}(v'.d)$ \n22: $v'.p \\gets v$ , $v'.d \\gets v.d + 1$ , $v'.\\Gamma \\gets v.\\Gamma$ \n23: $v'.\\gamma_{x,y} \\gets a$ \n24: if $a = -1$ then \n25: $v.lc \\gets v'$ \n26: else if $a = 0$ then \n27: $v.mc \\gets v'$ \n28: else \n29: $v.rc \\gets v'$ \n30: end if \n31: $v \\gets v'$ \n32: end while \n33: return $v$ \n34: end function \n35: function SEARCH(v) \n36: while $v$ is fully expanded do \n37: $v \\gets$ BESTCHILD(v) \n38: end while \n39: if $v$ is not a leaf node then \n40: $v \\gets$ RANDOMSEARCH(v) \n41: end if \n42: return $v$ \n43: end function",
|
||||
"bbox": [510,87,881,740],
|
||||
"page_idx": 0
|
||||
}
|
||||
```
|
||||
|
||||
Example: list (text) entry
|
||||
```json
|
||||
{
|
||||
"type": "list",
|
||||
"sub_type": "text",
|
||||
"list_items": [
|
||||
"H.1 Introduction",
|
||||
"H.2 Example: Divide by Zero without Exception Handling",
|
||||
"H.3 Example: Divide by Zero with Exception Handling",
|
||||
"H.4 Summary"
|
||||
],
|
||||
"bbox": [174,155,818,333],
|
||||
"page_idx": 0
|
||||
}
|
||||
```
|
||||
|
||||
Example: discarded blocks output
|
||||
```json
|
||||
[
|
||||
{
|
||||
"type": "header",
|
||||
"text": "Journal of Hydrology 310 (2005) 253-265",
|
||||
"bbox": [363,164,623,177],
|
||||
"page_idx": 0
|
||||
},
|
||||
{
|
||||
"type": "page_footnote",
|
||||
"text": "* Corresponding author. Address: Forest Science Centre, Department of Sustainability and Environment, P.O. Box 137, Heidelberg, Vic. 3084, Australia. Tel.: +61 3 9450 8719; fax: +61 3 9450 8644.",
|
||||
"bbox": [71,815,915,841],
|
||||
"page_idx": 0
|
||||
}
|
||||
]
|
||||
```
|
||||
|
||||
## Summary
|
||||
|
||||
The above files constitute MinerU's complete output results. Users can choose appropriate files for subsequent processing based on their needs:
|
||||
|
||||
- **Model outputs** (Use raw outputs):
|
||||
* model.json
|
||||
|
||||
- **Debugging and verification** (Use visualization files):
|
||||
* layout.pdf
|
||||
* spans.pdf
|
||||
|
||||
- **Content extraction**: (Use simplified files):
|
||||
* *.md
|
||||
* content_list.json
|
||||
|
||||
- **Secondary development**: (Use structured files):
|
||||
* middle.json
|
||||
@@ -0,0 +1,52 @@
|
||||
# Advanced Command Line Parameters
|
||||
|
||||
## vllm Acceleration Parameter Optimization
|
||||
|
||||
### Performance Optimization Parameters
|
||||
> [!TIP]
|
||||
> If you can already use vllm normally for accelerated VLM model inference but still want to further improve inference speed, you can try the following parameters:
|
||||
>
|
||||
> - If you have multiple graphics cards, you can use vllm's multi-card parallel mode to increase throughput: `--data-parallel-size 2`
|
||||
|
||||
### Parameter Passing Instructions
|
||||
> [!TIP]
|
||||
> - All officially supported vllm parameters can be passed to MinerU through command line arguments, including the following commands: `mineru`, `mineru-vllm-server`, `mineru-gradio`, `mineru-api`
|
||||
> - If you want to learn more about `vllm` parameter usage, please refer to the [vllm official documentation](https://docs.vllm.ai/en/latest/cli/serve.html)
|
||||
|
||||
## GPU Device Selection and Configuration
|
||||
|
||||
### CUDA_VISIBLE_DEVICES Basic Usage
|
||||
> [!TIP]
|
||||
> - In any situation, you can specify visible GPU devices by adding the `CUDA_VISIBLE_DEVICES` environment variable at the beginning of the command line. For example:
|
||||
> ```bash
|
||||
> CUDA_VISIBLE_DEVICES=1 mineru -p <input_path> -o <output_path>
|
||||
> ```
|
||||
> - This specification method is effective for all command line calls, including `mineru`, `mineru-vllm-server`, `mineru-gradio`, and `mineru-api`, and applies to both `pipeline` and `vlm` backends.
|
||||
|
||||
### Common Device Configuration Examples
|
||||
> [!TIP]
|
||||
> Here are some common `CUDA_VISIBLE_DEVICES` setting examples:
|
||||
> ```bash
|
||||
> CUDA_VISIBLE_DEVICES=1 # Only device 1 will be seen
|
||||
> CUDA_VISIBLE_DEVICES=0,1 # Devices 0 and 1 will be visible
|
||||
> CUDA_VISIBLE_DEVICES="0,1" # Same as above, quotation marks are optional
|
||||
> CUDA_VISIBLE_DEVICES=0,2,3 # Devices 0, 2, 3 will be visible; device 1 is masked
|
||||
> CUDA_VISIBLE_DEVICES="" # No GPU will be visible
|
||||
> ```
|
||||
|
||||
## Practical Application Scenarios
|
||||
> [!TIP]
|
||||
> Here are some possible usage scenarios:
|
||||
>
|
||||
> - If you have multiple graphics cards and need to specify cards 0 and 1, using multi-card parallelism to start `vllm-server`, you can use the following command:
|
||||
> ```bash
|
||||
> CUDA_VISIBLE_DEVICES=0,1 mineru-vllm-server --port 30000 --data-parallel-size 2
|
||||
> ```
|
||||
>
|
||||
> - If you have multiple graphics cards and need to start two `fastapi` services on cards 0 and 1, listening on different ports respectively, you can use the following commands:
|
||||
> ```bash
|
||||
> # In terminal 1
|
||||
> CUDA_VISIBLE_DEVICES=0 mineru-api --host 127.0.0.1 --port 8000
|
||||
> # In terminal 2
|
||||
> CUDA_VISIBLE_DEVICES=1 mineru-api --host 127.0.0.1 --port 8001
|
||||
> ```
|
||||
@@ -0,0 +1,113 @@
|
||||
# Command Line Tools Usage Instructions
|
||||
|
||||
## View Help Information
|
||||
To view help information for MinerU command line tools, you can use the `--help` parameter. Here are help information examples for various command line tools:
|
||||
```bash
|
||||
mineru --help
|
||||
Usage: mineru [OPTIONS]
|
||||
|
||||
Options:
|
||||
-v, --version Show version and exit
|
||||
-p, --path PATH Input file path or directory (required)
|
||||
-o, --output PATH Output directory (required)
|
||||
-m, --method [auto|txt|ocr] Parsing method: auto (default), txt, ocr (pipeline backend only)
|
||||
-b, --backend [pipeline|vlm-transformers|vlm-vllm-engine|vlm-http-client]
|
||||
Parsing backend (default: pipeline)
|
||||
-l, --lang [ch|ch_server|ch_lite|en|korean|japan|chinese_cht|ta|te|ka|th|el|latin|arabic|east_slavic|cyrillic|devanagari]
|
||||
Specify document language (improves OCR accuracy, pipeline backend only)
|
||||
-u, --url TEXT Service address when using http-client
|
||||
-s, --start INTEGER Starting page number for parsing (0-based)
|
||||
-e, --end INTEGER Ending page number for parsing (0-based)
|
||||
-f, --formula BOOLEAN Enable formula parsing (default: enabled)
|
||||
-t, --table BOOLEAN Enable table parsing (default: enabled)
|
||||
-d, --device TEXT Inference device (e.g., cpu/cuda/cuda:0/npu/mps, pipeline and vlm-transformers backend only)
|
||||
--vram INTEGER Maximum GPU VRAM usage per process (GB) (pipeline backend only)
|
||||
--source [huggingface|modelscope|local]
|
||||
Model source, default: huggingface
|
||||
--help Show help information
|
||||
```
|
||||
```bash
|
||||
mineru-api --help
|
||||
Usage: mineru-api [OPTIONS]
|
||||
|
||||
Options:
|
||||
--host TEXT Server host (default: 127.0.0.1)
|
||||
--port INTEGER Server port (default: 8000)
|
||||
--reload Enable auto-reload (development mode)
|
||||
--help Show this message and exit.
|
||||
```
|
||||
```bash
|
||||
mineru-gradio --help
|
||||
Usage: mineru-gradio [OPTIONS]
|
||||
|
||||
Options:
|
||||
--enable-example BOOLEAN Enable example files for input. The example
|
||||
files to be input need to be placed in the
|
||||
`example` folder within the directory where
|
||||
the command is currently executed.
|
||||
--enable-vllm-engine BOOLEAN Enable vllm engine backend for faster
|
||||
processing.
|
||||
--enable-api BOOLEAN Enable gradio API for serving the
|
||||
application.
|
||||
--max-convert-pages INTEGER Set the maximum number of pages to convert
|
||||
from PDF to Markdown.
|
||||
--server-name TEXT Set the server name for the Gradio app.
|
||||
--server-port INTEGER Set the server port for the Gradio app.
|
||||
--latex-delimiters-type [a|b|all]
|
||||
Set the type of LaTeX delimiters to use in
|
||||
Markdown rendering: 'a' for type '$', 'b' for
|
||||
type '()[]', 'all' for both types.
|
||||
--help Show this message and exit.
|
||||
```
|
||||
|
||||
## Environment Variables Description
|
||||
|
||||
Some parameters of MinerU command line tools have equivalent environment variable configurations. Generally, environment variable configurations have higher priority than command line parameters and take effect across all command line tools.
|
||||
Here are the environment variables and their descriptions:
|
||||
|
||||
- `MINERU_DEVICE_MODE`:
|
||||
* Used to specify inference device
|
||||
* supports device types like `cpu/cuda/cuda:0/npu/mps`
|
||||
* only effective for `pipeline` and `vlm-transformers` backends.
|
||||
|
||||
- `MINERU_VIRTUAL_VRAM_SIZE`:
|
||||
* Used to specify maximum GPU VRAM usage per process (GB)
|
||||
* only effective for `pipeline` backend.
|
||||
|
||||
- `MINERU_MODEL_SOURCE`:
|
||||
* Used to specify model source
|
||||
* supports `huggingface/modelscope/local`
|
||||
* defaults to `huggingface`, can be switched to `modelscope` or local models through environment variables.
|
||||
|
||||
- `MINERU_TOOLS_CONFIG_JSON`:
|
||||
* Used to specify configuration file path
|
||||
* defaults to `mineru.json` in user directory, can specify other configuration file paths through environment variables.
|
||||
|
||||
- `MINERU_FORMULA_ENABLE`:
|
||||
* Used to enable formula parsing
|
||||
* defaults to `true`, can be set to `false` through environment variables to disable formula parsing.
|
||||
|
||||
- `MINERU_FORMULA_CH_SUPPORT`:
|
||||
* Used to enable Chinese formula parsing optimization (experimental feature)
|
||||
* Default is `false`, can be set to `true` via environment variable to enable Chinese formula parsing optimization.
|
||||
* Only effective for `pipeline` backend.
|
||||
|
||||
- `MINERU_TABLE_ENABLE`:
|
||||
* Used to enable table parsing
|
||||
* Default is `true`, can be set to `false` via environment variable to disable table parsing.
|
||||
|
||||
- `MINERU_TABLE_MERGE_ENABLE`:
|
||||
* Used to enable table merging functionality
|
||||
* Default is `true`, can be set to `false` via environment variable to disable table merging functionality.
|
||||
|
||||
- `MINERU_PDF_RENDER_TIMEOUT`:
|
||||
* Used to set the timeout period (in seconds) for rendering PDF to images
|
||||
* Default is `300` seconds, can be set to other values via environment variable to adjust the image rendering timeout.
|
||||
|
||||
- `MINERU_INTRA_OP_NUM_THREADS`:
|
||||
* Used to set the intra_op thread count for ONNX models, affects the computation speed of individual operators
|
||||
* Default is `-1` (auto-select), can be set to other values via environment variable to adjust the thread count.
|
||||
|
||||
- `MINERU_INTER_OP_NUM_THREADS`:
|
||||
* Used to set the inter_op thread count for ONNX models, affects the parallel execution of multiple operators
|
||||
* Default is `-1` (auto-select), can be set to other values via environment variable to adjust the thread count.
|
||||
@@ -0,0 +1,16 @@
|
||||
# Usage Guide
|
||||
|
||||
This section provides comprehensive usage instructions for the project. We will help you progressively master the project's usage from basic to advanced through the following sections:
|
||||
|
||||
## Table of Contents
|
||||
|
||||
- [Quick Usage](./quick_usage.md) - Quick setup and basic usage
|
||||
- [Model Source Configuration](./model_source.md) - Detailed configuration instructions for model sources
|
||||
- [Command Line Tools](./cli_tools.md) - Detailed parameter descriptions for command line tools
|
||||
- [Advanced Optimization Parameters](./advanced_cli_parameters.md) - Advanced parameter descriptions for command line tool adaptation
|
||||
|
||||
## Getting Started
|
||||
|
||||
We recommend reading the documentation in the order listed above, which will help you better understand and use the project features.
|
||||
|
||||
If you encounter issues during usage, please check the [FAQ](../faq/index.md)
|
||||
@@ -0,0 +1,55 @@
|
||||
# Model Source Documentation
|
||||
|
||||
MinerU uses `HuggingFace` and `ModelScope` as model repositories. Users can switch model sources or use local models as needed.
|
||||
|
||||
- `HuggingFace` is the default model source, providing excellent loading speed and high stability globally.
|
||||
- `ModelScope` is the best choice for users in mainland China, providing seamlessly compatible `hf` SDK modules, suitable for users who cannot access HuggingFace.
|
||||
|
||||
## Methods to Switch Model Sources
|
||||
|
||||
### Switch via Command Line Parameters
|
||||
Currently, only the `mineru` command line tool supports switching model sources through command line parameters. Other command line tools such as `mineru-api`, `mineru-gradio`, etc., do not support this yet.
|
||||
```bash
|
||||
mineru -p <input_path> -o <output_path> --source modelscope
|
||||
```
|
||||
|
||||
### Switch via Environment Variables
|
||||
You can switch model sources by setting environment variables in any situation. This applies to all command line tools and API calls.
|
||||
```bash
|
||||
export MINERU_MODEL_SOURCE=modelscope
|
||||
```
|
||||
or
|
||||
```python
|
||||
import os
|
||||
os.environ["MINERU_MODEL_SOURCE"] = "modelscope"
|
||||
```
|
||||
>[!TIP]
|
||||
> Model sources set through environment variables will take effect in the current terminal session until the terminal is closed or the environment variable is modified. They have higher priority than command line parameters - if both command line parameters and environment variables are set, the command line parameters will be ignored.
|
||||
|
||||
## Using Local Models
|
||||
|
||||
### 1. Download Models to Local Storage
|
||||
```bash
|
||||
mineru-models-download --help
|
||||
```
|
||||
or use the interactive command line tool to select model downloads:
|
||||
```bash
|
||||
mineru-models-download
|
||||
```
|
||||
> [!NOTE]
|
||||
>- After download completion, the model path will be output in the current terminal window and automatically written to `mineru.json` in the user directory.
|
||||
>- You can also create it by copying the [configuration template file](https://github.com/opendatalab/MinerU/blob/master/mineru.template.json) to your user directory and renaming it to `mineru.json`.
|
||||
>- After downloading models locally, you can freely move the model folder to other locations while updating the model path in `mineru.json`.
|
||||
>- If you deploy the model folder to another server, please ensure you move the `mineru.json` file to the user directory of the new device and configure the model path correctly.
|
||||
>- If you need to update model files, you can run the `mineru-models-download` command again. Model updates do not support custom paths currently - if you haven't moved the local model folder, model files will be incrementally updated; if you have moved the model folder, model files will be re-downloaded to the default location and `mineru.json` will be updated.
|
||||
|
||||
### 2. Use Local Models for Parsing
|
||||
|
||||
```bash
|
||||
mineru -p <input_path> -o <output_path> --source local
|
||||
```
|
||||
or enable through environment variables:
|
||||
```bash
|
||||
export MINERU_MODEL_SOURCE=local
|
||||
mineru -p <input_path> -o <output_path>
|
||||
```
|
||||
@@ -0,0 +1,112 @@
|
||||
# Using MinerU
|
||||
|
||||
## Quick Model Source Configuration
|
||||
MinerU uses `huggingface` as the default model source. If users cannot access `huggingface` due to network restrictions, they can conveniently switch the model source to `modelscope` through environment variables:
|
||||
```bash
|
||||
export MINERU_MODEL_SOURCE=modelscope
|
||||
```
|
||||
For more information about model source configuration and custom local model paths, please refer to the [Model Source Documentation](./model_source.md) in the documentation.
|
||||
|
||||
## Quick Usage via Command Line
|
||||
MinerU has built-in command line tools that allow users to quickly use MinerU for PDF parsing through the command line:
|
||||
```bash
|
||||
# Default parsing using pipeline backend
|
||||
mineru -p <input_path> -o <output_path>
|
||||
```
|
||||
> [!TIP]
|
||||
>- `<input_path>`: Local PDF/image file or directory
|
||||
>- `<output_path>`: Output directory
|
||||
>
|
||||
> For more information about output files, please refer to [Output File Documentation](../reference/output_files.md).
|
||||
|
||||
> [!NOTE]
|
||||
> The command line tool will automatically attempt cuda/mps acceleration on Linux and macOS systems.
|
||||
> Windows users who need cuda acceleration should visit the [PyTorch official website](https://pytorch.org/get-started/locally/) to select the appropriate command for their cuda version to install acceleration-enabled `torch` and `torchvision`.
|
||||
|
||||
|
||||
```bash
|
||||
# Or specify vlm backend for parsing
|
||||
mineru -p <input_path> -o <output_path> -b vlm-transformers
|
||||
```
|
||||
> [!TIP]
|
||||
> The vlm backend additionally supports `vllm` acceleration. Compared to the `transformers` backend, `vllm` can achieve 20-30x speedup. You can check the installation method for the complete package supporting `vllm` acceleration in the [Extension Modules Installation Guide](../quick_start/extension_modules.md).
|
||||
|
||||
If you need to adjust parsing options through custom parameters, you can also check the more detailed [Command Line Tools Usage Instructions](./cli_tools.md) in the documentation.
|
||||
|
||||
## Advanced Usage via API, WebUI, http-client/server
|
||||
|
||||
- Direct Python API calls: [Python Usage Example](https://github.com/opendatalab/MinerU/blob/master/demo/demo.py)
|
||||
- FastAPI calls:
|
||||
```bash
|
||||
mineru-api --host 0.0.0.0 --port 8000
|
||||
```
|
||||
>[!TIP]
|
||||
>Access `http://127.0.0.1:8000/docs` in your browser to view the API documentation.
|
||||
- Start Gradio WebUI visual frontend:
|
||||
```bash
|
||||
# Using pipeline/vlm-transformers/vlm-http-client backends
|
||||
mineru-gradio --server-name 0.0.0.0 --server-port 7860
|
||||
# Or using vlm-vllm-engine/pipeline backends (requires vllm environment)
|
||||
mineru-gradio --server-name 0.0.0.0 --server-port 7860 --enable-vllm-engine true
|
||||
```
|
||||
>[!TIP]
|
||||
>
|
||||
>- Access `http://127.0.0.1:7860` in your browser to use the Gradio WebUI.
|
||||
|
||||
- Using `http-client/server` method:
|
||||
```bash
|
||||
# Start vllm server (requires vllm environment)
|
||||
mineru-vllm-server --port 30000
|
||||
```
|
||||
>[!TIP]
|
||||
>In another terminal, connect to vllm server via http client (only requires CPU and network, no vllm environment needed)
|
||||
> ```bash
|
||||
> mineru -p <input_path> -o <output_path> -b vlm-http-client -u http://127.0.0.1:30000
|
||||
> ```
|
||||
|
||||
> [!NOTE]
|
||||
> All officially supported vllm parameters can be passed to MinerU through command line arguments, including the following commands: `mineru`, `mineru-vllm-server`, `mineru-gradio`, `mineru-api`.
|
||||
> We have compiled some commonly used parameters and usage methods for `vllm`, which can be found in the documentation [Advanced Command Line Parameters](./advanced_cli_parameters.md).
|
||||
|
||||
## Extending MinerU Functionality with Configuration Files
|
||||
|
||||
MinerU is now ready to use out of the box, but also supports extending functionality through configuration files. You can edit `mineru.json` file in your user directory to add custom configurations.
|
||||
|
||||
>[!IMPORTANT]
|
||||
>The `mineru.json` file will be automatically generated when you use the built-in model download command `mineru-models-download`, or you can create it by copying the [configuration template file](https://github.com/opendatalab/MinerU/blob/master/mineru.template.json) to your user directory and renaming it to `mineru.json`.
|
||||
|
||||
Here are some available configuration options:
|
||||
|
||||
- `latex-delimiter-config`:
|
||||
* Used to configure LaTeX formula delimiters
|
||||
* Defaults to `$` symbol, can be modified to other symbols or strings as needed.
|
||||
|
||||
- `llm-aided-config`:
|
||||
* Used to configure parameters for LLM-assisted title hierarchy
|
||||
* Compatible with all LLM models supporting `openai protocol`, defaults to using Alibaba Cloud Bailian's `qwen3-next-80b-a3b-instruct` model.
|
||||
* You need to configure your own API key and set `enable` to `true` to enable this feature.
|
||||
* If your API provider does not support the `enable_thinking` parameter, please manually remove it.
|
||||
* For example, in your configuration file, the `llm-aided-config` section may look like:
|
||||
```json
|
||||
"llm-aided-config": {
|
||||
"api_key": "your_api_key",
|
||||
"base_url": "https://dashscope.aliyuncs.com/compatible-mode/v1",
|
||||
"model": "qwen3-next-80b-a3b-instruct",
|
||||
"enable_thinking": false,
|
||||
"enable": false
|
||||
}
|
||||
```
|
||||
* To remove the `enable_thinking` parameter, simply delete the line containing `"enable_thinking": false`, resulting in:
|
||||
```json
|
||||
"llm-aided-config": {
|
||||
"api_key": "your_api_key",
|
||||
"base_url": "https://dashscope.aliyuncs.com/compatible-mode/v1",
|
||||
"model": "qwen3-next-80b-a3b-instruct",
|
||||
"enable": false
|
||||
}
|
||||
```
|
||||
|
||||
- `models-dir`:
|
||||
* Used to specify local model storage directory
|
||||
* Please specify model directories for `pipeline` and `vlm` backends separately.
|
||||
* After specifying the directory, you can use local models by configuring the environment variable `export MINERU_MODEL_SOURCE=local`.
|
||||
|
After Width: | Height: | Size: 18 KiB |
|
After Width: | Height: | Size: 96 KiB |
|
After Width: | Height: | Size: 105 KiB |
|
After Width: | Height: | Size: 106 KiB |
|
After Width: | Height: | Size: 626 KiB |
|
After Width: | Height: | Size: 8.5 KiB |
@@ -0,0 +1,22 @@
|
||||
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M19.7238 3.86898C19.7238 4.57597 19.1502 5.1491 18.4427 5.1491C17.7352 5.1491 17.1616 4.57597 17.1616 3.86898C17.1616 3.16199 17.7352 2.58887 18.4427 2.58887C19.1502 2.58887 19.7238 3.16199 19.7238 3.86898Z" fill="url(#paint0_linear_8609_1645)"/>
|
||||
<path d="M19.7238 3.86898C19.7238 4.57597 19.1502 5.1491 18.4427 5.1491C17.7352 5.1491 17.1616 4.57597 17.1616 3.86898C17.1616 3.16199 17.7352 2.58887 18.4427 2.58887C19.1502 2.58887 19.7238 3.16199 19.7238 3.86898Z" fill="#010101"/>
|
||||
<path d="M15.3681 5.1491C15.3681 5.85609 14.7945 6.42921 14.087 6.42921C13.3794 6.42921 12.8059 5.85609 12.8059 5.1491C12.8059 4.44211 13.3794 3.86898 14.087 3.86898C14.7945 3.86898 15.3681 4.44211 15.3681 5.1491Z" fill="url(#paint1_linear_8609_1645)"/>
|
||||
<path d="M15.3681 5.1491C15.3681 5.85609 14.7945 6.42921 14.087 6.42921C13.3794 6.42921 12.8059 5.85609 12.8059 5.1491C12.8059 4.44211 13.3794 3.86898 14.087 3.86898C14.7945 3.86898 15.3681 4.44211 15.3681 5.1491Z" fill="#010101"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M8.05175 11.2368C8.05175 13.4605 9.14375 15.4293 10.8211 16.6371C11.8241 15.7389 12.4551 14.4345 12.4551 12.9828V9.39673C12.4551 8.85661 12.8197 8.38448 13.3426 8.24757L19.8924 6.53265C20.6459 6.33534 21.3826 6.90341 21.3826 7.6818L21.3826 12.0452C21.3826 17.2179 17.1861 21.4111 12.0095 21.4111L11.9942 21.4111C6.81758 21.4111 2.62109 17.2179 2.62109 12.0452V9.03388C2.62109 8.49175 2.9884 8.01839 3.51385 7.88336L6.56677 7.09882C7.31904 6.9055 8.05175 7.47318 8.05175 8.24934V11.2368ZM3.9798 12.0452C3.9798 13.8476 4.57565 15.5108 5.58124 16.849C6.04996 17.4728 6.7655 17.8884 7.54573 17.8884V17.8884C8.28848 17.8884 8.9927 17.7236 9.62376 17.4286C7.83439 15.9596 6.69304 13.7314 6.69304 11.2368V8.46821L3.9798 9.16546V12.0452Z" fill="url(#paint2_linear_8609_1645)"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M8.05175 11.2368C8.05175 13.4605 9.14375 15.4293 10.8211 16.6371C11.8241 15.7389 12.4551 14.4345 12.4551 12.9828V9.39673C12.4551 8.85661 12.8197 8.38448 13.3426 8.24757L19.8924 6.53265C20.6459 6.33534 21.3826 6.90341 21.3826 7.6818L21.3826 12.0452C21.3826 17.2179 17.1861 21.4111 12.0095 21.4111L11.9942 21.4111C6.81758 21.4111 2.62109 17.2179 2.62109 12.0452V9.03388C2.62109 8.49175 2.9884 8.01839 3.51385 7.88336L6.56677 7.09882C7.31904 6.9055 8.05175 7.47318 8.05175 8.24934V11.2368ZM3.9798 12.0452C3.9798 13.8476 4.57565 15.5108 5.58124 16.849C6.04996 17.4728 6.7655 17.8884 7.54573 17.8884V17.8884C8.28848 17.8884 8.9927 17.7236 9.62376 17.4286C7.83439 15.9596 6.69304 13.7314 6.69304 11.2368V8.46821L3.9798 9.16546V12.0452Z" fill="#010101"/>
|
||||
<defs>
|
||||
<linearGradient id="paint0_linear_8609_1645" x1="14.3898" y1="8.36821" x2="13.1876" y2="19.4461" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="white"/>
|
||||
<stop offset="1" stop-color="#2E2E2E"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint1_linear_8609_1645" x1="14.3898" y1="8.36821" x2="13.1876" y2="19.4461" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="white"/>
|
||||
<stop offset="1" stop-color="#2E2E2E"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint2_linear_8609_1645" x1="14.3898" y1="8.36821" x2="13.1876" y2="19.4461" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="white"/>
|
||||
<stop offset="1" stop-color="#2E2E2E"/>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 3.3 KiB |
|
After Width: | Height: | Size: 13 KiB |