RAGFlow集成TextIn方案2.0上线!支持快速镜像部署,随时切换解析插件
📝 项目简介
当前基于 RAGFlow v0.24.0 | 插件式集成
本项目是 RAGFlow 的增强版本,集成了 TextIn (https://www.textin.com/) 文档智能解析能力,提供更高质量的 PDF 文档理解。
TextIn 是合合信息旗下的文档智能处理云平台,通过 AI 能力实现文本、表格、图表和公式的精准提取。

Github项目地址: https://github.com/intsig-textin/xparse-ragflow
设计理念:
插件式集成 — 新增功能独立存放,不破坏 RAGFlow 原有代码结构 最小侵入 — 对原有文件的修改仅限于必要的路由接入 易于维护 — 便于持续跟进 RAGFlow 上游版本更新 灵活切换 — 可随时切换回官方版本或使用其他解析引擎
✨ 核心特性

🚀 快速开始
✅ 前置条件
在开始之前,请确保:
已注册 TextIn (https://www.textin.com/)账号并开通 API 权限 从 TextIn 控制台(https://www.textin.com/console/dashboard/setting)获取 App ID 和 Secret Code 本地已安装 RAGflow 对应官方版本
⚠️ 版本提示:请确保部署的服务镜像版本与Github仓库当前Tag保持一致,避免版本不兼容问题。
🇨🇳 国内镜像加速:
国内用户可以使用以下阿里云镜像加速部署,提升拉取速度:

⚙️ 配置方法
使用国内镜像需要修改以下文件:
📄 步骤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/.env 和 docker/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 卡片,点击 添加模型,填写以下配置信息:


步骤 1.3:验证并保存
点击 验证 按钮测试连接,验证通过后点击 添加 保存配置。
2. 在知识库中使用:
步骤 2.1:创建或打开知识库
在 RAGFlow 主界面创建新知识库,或打开已有知识库。
步骤 2.2:选择 TextIn 解析器
进入知识库的 设置 页面,找到 PDF 解析器 选项。
在下拉列表的 TextIn 分组中,选择刚才添加的模型(标注为 Experimental)。

点击 保存 应用配置。
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、索引流程无需任何调整。
代码改动概览:
后端改动文件

前端改动文件

❓ 常见问题
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 数组,解析器按以下规则处理不同类型的内容:

2. 跨页表格处理
TextIn 通过split_section_page_ids和 split_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