新闻资讯RAGFlow集成TextIn方案2.0上线!支持快速镜像部署,随时切换解析插件

RAGFlow集成TextIn方案2.0上线!支持快速镜像部署,随时切换解析插件

2026-04-16 14:15:04

📝 项目简介

当前基于 RAGFlow v0.24.0 | 插件式集成

本项目是 RAGFlow 的增强版本,集成了 TextIn (https://www.textin.com/) 文档智能解析能力,提供更高质量的 PDF 文档理解。

TextIn 是合合信息旗下的文档智能处理云平台,通过 AI 能力实现文本、表格、图表和公式的精准提取。

image

Github项目地址: https://github.com/intsig-textin/xparse-ragflow

设计理念:

  • 插件式集成 — 新增功能独立存放,不破坏 RAGFlow 原有代码结构
  • 最小侵入 — 对原有文件的修改仅限于必要的路由接入
  • 易于维护 — 便于持续跟进 RAGFlow 上游版本更新
  • 灵活切换 — 可随时切换回官方版本或使用其他解析引擎

✨ 核心特性

image

🚀 快速开始

✅ 前置条件

在开始之前,请确保:

  1. 已注册 TextIn (https://www.textin.com/)账号并开通 API 权限
  2. 从 TextIn 控制台(https://www.textin.com/console/dashboard/setting)获取 App IDSecret Code
  3. 本地已安装 RAGflow 对应官方版本

⚠️ 版本提示:请确保部署的服务镜像版本与Github仓库当前Tag保持一致,避免版本不兼容问题。

🇨🇳 国内镜像加速:

国内用户可以使用以下阿里云镜像加速部署,提升拉取速度:

image

⚙️ 配置方法

使用国内镜像需要修改以下文件:

📄 步骤1:修改 docker/.env 文件(RAGFlow 主服务镜像)

# 将第 157 行修改为:
RAGFLOW_IMAGE=crpi-2ix4w0sw61gwpv0x.cn-shanghai.personal.cr.aliyuncs.com/intsig_acg/ragflow:v0.24.0

📄 步骤2:修改 docker/docker-compose-base.yml 文件(依赖服务镜像)

# 第 5 行 - Elasticsearch
image: crpi-2ix4w0sw61gwpv0x.cn-shanghai.personal.cr.aliyuncs.com/intsig_acg/elasticsearch:8.11.3

# 第 178 行 - MySQL
image: crpi-2ix4w0sw61gwpv0x.cn-shanghai.personal.cr.aliyuncs.com/intsig_acg/mysql:8.0.39

# 第 205 行 - MinIO
image: crpi-2ix4w0sw61gwpv0x.cn-shanghai.personal.cr.aliyuncs.com/intsig_acg/minio:RELEASE.2025-06-13T11-33-47Z

# 第 227 行 - Valkey
image: crpi-2ix4w0sw61gwpv0x.cn-shanghai.personal.cr.aliyuncs.com/intsig_acg/valkey:8

📦 安装步骤:

根据实际需求选择以下两种部署方式之一:

🎯 方式一:使用国内镜像(推荐)

适用于快速部署和生产环境。

按照上述国内镜像加速章节修改 docker/.envdocker/docker-compose-base.yml 文件中的镜像地址。

🔧 方式二:从源码构建

适用于需要修改代码或调试的场景。

📥 步骤1:克隆仓库并构建镜像

git clone https://github.com/intsig-textin/xparse-ragflow.git
cd xparse-ragflow
docker build -t your-image-name:tag -f Dockerfile .

⚙️ 步骤2:配置镜像名称

修改 docker/.env 文件第 157 行:

RAGFLOW_IMAGE=your-image-name:tag

🚀 启动与访问

✅ 完成上述配置后,执行以下命令启动服务:

cd docker
DEVICE=gpu docker-compose up -d

🌐 访问界面

服务启动完成后,在浏览器中访问以下地址:

http://localhost:{SVR_WEB_HTTP_PORT}

💡 默认端口为 80,可在 docker/.env 中通过 SVR_WEB_HTTP_PORT 配置。

📘 使用指南

1. 配置 TextIn 解析引擎:

步骤 1.1:进入模型提供商设置

登录 RAGFlow 后,点击右上角头像,进入 用户设置 → 模型提供商

步骤 1.2:添加 TextIn 模型

找到 TextIn 卡片,点击 添加模型,填写以下配置信息:

image

image

步骤 1.3:验证并保存

点击 验证 按钮测试连接,验证通过后点击 添加 保存配置。

2. 在知识库中使用:

步骤 2.1:创建或打开知识库

在 RAGFlow 主界面创建新知识库,或打开已有知识库。

步骤 2.2:选择 TextIn 解析器

进入知识库的 设置 页面,找到 PDF 解析器 选项。

在下拉列表的 TextIn 分组中,选择刚才添加的模型(标注为 Experimental)。

image

点击 保存 应用配置。

3. 解析 PDF 文档:

步骤 3.1:上传文档

在知识库中点击 上传文件,选择需要解析的 PDF 文档。

步骤 3.2:开始解析

上传完成后,RAGFlow 将自动使用 TextIn API 进行解析。

步骤 3.3:查看结果

解析完成后,可在文档详情页查看提取的文本、表格和图像内容。

🏗️ 架构说明

数据流程图:

┌─────────────┐
│  PDF 文件        │
└──────┬──────┘
       │
       ▼
┌─────────────────────────────┐
│  naive.py: by_textin()                    │  ← 文档处理入口
└──────┬──────────────────────┘
       │
       ▼
┌─────────────────────────────┐
│  LLMBundle (OCR 类型)                   │  ← 知识库配置的 TextIn 模型
└──────┬──────────────────────┘
       │
       ▼
┌─────────────────────────────┐
│  TextInOcrModel                       │  ← rag/llm/ocr_model.py
└──────┬──────────────────────┘
       │
       ▼
┌─────────────────────────────┐
│  TextInParser                       │  ← deepdoc/parser/textin_parser.py
│  ├─ 调用 TextIn API                  │
│  └─ 使用 pdfplumber 渲染页面               │
└──────┬──────────────────────┘
       │
       ▼
┌─────────────────────────────┐
│  (sections, tables, images)                 │  ← 与 RAGFlowPdfParser 兼容的输出
└─────────────────────────────┘
       │
       ▼
┌─────────────────────────────┐
│  Chunking 流水线                      │  ← 无需任何改动
└─────────────────────────────┘

关键设计TextInParser 继承自 RAGFlowPdfParser,输出格式完全兼容,下游的 Chunking、索引流程无需任何调整。

代码改动概览:

后端改动文件

image

前端改动文件

image

❓ 常见问题

Q:TextIn 会影响嵌入模型或检索流程吗?

不会。TextIn 仅负责 PDF 文档的解析阶段(OCR + 布局分析),后续的向量嵌入、文本分块(Chunking)、检索等流程完全不受影响。

Q:需要本地 GPU 资源吗?

不需要。TextIn 解析完全通过云端 API 调用实现,本地不会加载任何 OCR 或布局识别模型,对硬件无特殊要求。

Q:支持 Word、Excel 等其他文件格式吗?

目前仅支持 PDF 格式。本集成以插件方式接入,只在知识库配置 TextIn 引擎时对 PDF 生效,Word、Excel 等文件类型仍使用 RAGFlow 原有的解析器,行为不受影响。

Q:能同时使用 TextIn 和 DeepDOC 解析器吗?

可以。PDF 解析器在知识库级别独立配置,不同知识库可以选择不同的解析引擎(TextIn、DeepDOC 等),互不干扰。

Q:TextIn API 调用失败会怎样?有降级机制吗?

目前没有自动降级机制。如果 TextIn API 调用失败,解析任务会报错终止。建议在使用前先通过模型验证功能测试 API 连接。

Q:如何查看 TextIn API 的调用费用?

TextIn 是按调用次数或页数计费的服务,具体费用请登录TextIn 控制台(https://www.textin.com/console/dashboard)

Q:解析速度如何?比本地 DeepDOC 快吗?

解析速度取决于文档复杂度和网络状况。TextIn 通过云端 GPU 集群处理,对于复杂文档通常比本地单 GPU 更快,但需要考虑网络延迟和 API 队列时间。

📊 文档解析模型评测

本项目提供了完整的评测工具,通过 RAGFlow 问答质量对比来评估不同文档解析器(TextIn、DeepDOC、PaddlePaddle 等)的实际效果。

完整的工具使用指南、配置方法和示例,请查看:

RAGFlow 文档解析器效果对比工具:https://github.com/intsig-textin/xparse-ragflow/blob/main/test_qa/README.md

🔬 进阶内容

解析行为说明:

1. 内容类型映射

TextIn API返回结构化的 detail 数组,解析器按以下规则处理不同类型的内容:

image

2. 跨页表格处理

TextIn 通过split_section_page_idssplit_section_positions 字段标记跨页拆分的表格。 解析器会为每个分段生成独立的position记录,确保在RAGFlow UI中能够正确高亮显示表格的所有分段。

3. 坐标系统转换

TextIn API使用144 DPI 坐标系统,而RAGFlow使用72 DPI。解析器会自动进行坐标转换:

ragflow_coord = textin_coord / 2.0

这确保了文档高亮位置的准确性。

开发者指南:

类继承关系

RAGFlowPdfParser (基类)
    │
    └── TextInParser              ← deepdoc/parser/textin_parser.py
            │
            └── TextInOcrModel    ← rag/llm/ocr_model.py

本地开发

如需修改 TextIn 集成代码,建议按以下步骤进行本地开发:

# 1. 克隆仓库
git clone <repository-url>
cd ragflow

# 2. 安装依赖
uv sync --python 3.12 --all-extras

# 3. 启动基础服务
docker compose -f docker/docker-compose-base.yml up -d

# 4. 配置环境变量
cp docker/.env.example docker/.env
# 编辑 docker/.env,添加 TextIn 配置

# 5. 启动后端服务
source .venv/bin/activate
export PYTHONPATH=$(pwd)
bash docker/launch_backend_service.sh

# 6. 修改代码并测试
# 修改 deepdoc/parser/textin_parser.py 等文件
# 重启服务验证效果

🔗 相关链接

官方资源:

    • RAGFlow 官方仓库:https://github.com/infiniflow/ragflow
    • RAGFlow 文档:https://ragflow.io/docs
    • TextIn 官网:https://www.textin.com/
    • TextIn API 文档:https://docs.textin.com/xparse/parse-quickstart


热门资讯

热门产品
热门标签

background
background
400-6666-582
免费使用
人工咨询
人工咨询
技术交流群
技术交流群

联系我们