Files
ragflow/docs/guides/dataset/select_pdf_parser.md
NeedmeFordev 387b0b27c4 feat(parser): support external Docling server via DOCLING_SERVER_URL (#13527)
### What problem does this PR solve?

This PR adds support for parsing PDFs through an external Docling
server, so RAGFlow can connect to remote `docling serve` deployments
instead of relying only on local in-process Docling.

It addresses the feature request in
[#13426](https://github.com/infiniflow/ragflow/issues/13426) and aligns
with the external-server usage pattern already used by MinerU.

### Type of change

- [ ] Bug Fix (non-breaking change which fixes an issue)
- [x] New Feature (non-breaking change which adds functionality)
- [x] Documentation Update
- [ ] Refactoring
- [ ] Performance Improvement
- [ ] Other (please describe):

### What is changed?

- Add external Docling server support in `DoclingParser`:
  - Use `DOCLING_SERVER_URL` to enable remote parsing mode.
- Try `POST /v1/convert/source` first, and fallback to
`/v1alpha/convert/source`.
- Keep existing local Docling behavior when `DOCLING_SERVER_URL` is not
set.
- Wire Docling env settings into parser invocation paths:
  - `rag/app/naive.py`
  - `rag/flow/parser/parser.py`
- Add Docling env hints in constants and update docs:
  - `docs/guides/dataset/select_pdf_parser.md`
  - `docs/guides/agent/agent_component_reference/parser.md`
  - `docs/faq.mdx`

### Why this approach?

This keeps the change focused on one issue and one capability (external
Docling connectivity), without introducing unrelated provider-model
plumbing.

### Validation

- Static checks:
  - `python -m py_compile` on changed Python files
  - `python -m ruff check` on changed Python files
- Functional checks:
  - Remote v1 endpoint path works
  - v1alpha fallback works
  - Local Docling path remains available when server URL is unset

### Related links

- Feature request: [Support external Docling server (issue
#13426)](https://github.com/infiniflow/ragflow/issues/13426)
- Compare view for this branch:
[main...feat/docling-server](https://github.com/infiniflow/ragflow/compare/main...spider-yamet:ragflow:feat/docling-server?expand=1)

##### Fixes [#13426](https://github.com/infiniflow/ragflow/issues/13426)
2026-03-12 17:09:03 +08:00

5.1 KiB

sidebar_position, slug, sidebar_custom_props
sidebar_position slug sidebar_custom_props
-3 /select_pdf_parser
categoryIcon
LucideFileText

Select PDF parser

Select a visual model for parsing your PDFs.


RAGFlow isn't one-size-fits-all. It is built for flexibility and supports deeper customization to accommodate more complex use cases. From v0.17.0 onwards, RAGFlow decouples DeepDoc-specific data extraction tasks from chunking methods for PDF files. This separation enables you to autonomously select a visual model for OCR (Optical Character Recognition), TSR (Table Structure Recognition), and DLR (Document Layout Recognition) tasks that balances speed and performance to suit your specific use cases. If your PDFs contain only plain text, you can opt to skip these tasks by selecting the Naive option, to reduce the overall parsing time.

data extraction

Prerequisites

  • The PDF parser dropdown menu appears only when you select a chunking method compatible with PDFs, including:
    • General
    • Manual
    • Paper
    • Book
    • Laws
    • Presentation
    • One
  • To use a third-party visual model for parsing PDFs, ensure you have set a default VLM under Set default models on the Model providers page.

Quickstart

  1. On your dataset's Configuration page, select a chunking method, say General.

    The PDF parser dropdown menu appears.

  2. Select the option that works best with your scenario:

  • DeepDoc: (Default) The default visual model performing OCR, TSR, and DLR tasks on PDFs, but can be time-consuming.
  • Naive: Skip OCR, TSR, and DLR tasks if all your PDFs are plain text.
  • MinerU: (Experimental) An open-source tool that converts PDF into machine-readable formats.
  • Docling: (Experimental) An open-source document processing tool for gen AI.
  • A third-party visual model from a specific model provider.

:::danger IMPORTANT Starting from v0.22.0, RAGFlow includes MinerU (≥ 2.6.3) as an optional PDF parser of multiple backends. Please note that RAGFlow acts only as a remote client for MinerU, calling the MinerU API to parse documents and reading the returned files. To use this feature: :::

  1. Prepare a reachable MinerU API service (FastAPI server).
  2. In the .env file or from the Model providers page in the UI, configure RAGFlow as a remote client to MinerU:
    • MINERU_APISERVER: The MinerU API endpoint (e.g., http://mineru-host:8886).
    • MINERU_BACKEND: The MinerU backend:
      • "pipeline" (default)
      • "vlm-http-client"
      • "vlm-transformers"
      • "vlm-vllm-engine"
      • "vlm-mlx-engine"
      • "vlm-vllm-async-engine"
      • "vlm-lmdeploy-engine".
    • MINERU_SERVER_URL: (optional) The downstream vLLM HTTP server (e.g., http://vllm-host:30000). Applicable when MINERU_BACKEND is set to "vlm-http-client".
    • MINERU_OUTPUT_DIR: (optional) The local directory for holding the outputs of the MinerU API service (zip/JSON) before ingestion.
    • MINERU_DELETE_OUTPUT: Whether to delete temporary output when a temporary directory is used:
      • 1: Delete.
      • 0: Retain.
  3. In the web UI, navigate to your dataset's Configuration page and find the Ingestion pipeline section:
    • If you decide to use a chunking method from the Built-in dropdown, ensure it supports PDF parsing, then select MinerU from the PDF parser dropdown.
    • If you use a custom ingestion pipeline instead, select MinerU in the PDF parser section of the Parser component.

To use an external Docling Serve instance (instead of local in-process Docling), set:

  • DOCLING_SERVER_URL: The Docling Serve API endpoint (for example, http://docling-host:5001).

When DOCLING_SERVER_URL is set, RAGFlow sends PDF content to Docling Serve (/v1/convert/source, with fallback to /v1alpha/convert/source) and ingests the returned markdown/text. If the variable is not set, RAGFlow keeps using local Docling (USE_DOCLING=true + installed package) behavior.

:::note All MinerU environment variables are optional. When set, these values are used to auto-provision a MinerU OCR model for the tenant on first use. To avoid auto-provisioning, skip the environment variable settings and only configure MinerU from the Model providers page in the UI. :::

:::caution WARNING Third-party visual models are marked Experimental, because we have not fully tested these models for the aforementioned data extraction tasks. :::

Frequently asked questions

When should I select DeepDoc or a third-party visual model as the PDF parser?

Use a visual model to extract data if your PDFs contain formatted or image-based text rather than plain text. DeepDoc is the default visual model but can be time-consuming. You can also choose a lightweight or high-performance VLM depending on your needs and hardware capabilities.

Can I select a visual model to parse my DOCX files?

No, you cannot. This dropdown menu is for PDFs only. To use this feature, convert your DOCX files to PDF first.