RAGFlow集成TextIn方案2.0上线!支持快速镜像部署,随时切换解析插件
本项目是 RAGFlow 的增强版本,集成了 TextIn 文档智能解析能力,提供更高质量的 PDF 文档理解。 TextIn 是合合信息旗下的文档智能处理云平台,通过 AI 能力实现文本、表格、图表和公式的精准提取。 Github 项目地址:https://github.com/intsig-textin/xparse-ragflow ✅ 插件式集成 — 新增功能独立存放,不破坏 RAGFlow 原有代码结构 ✅ 最小侵入 — 对原有文件的修改仅限于必要的路由接入 ✅ 易于维护 — 便于持续跟进 RAGFlow 上游版本更新 ✅ 灵活切换 — 可随时切换回官方版本或使用其他解析引擎 在开始之前,请确保: 国内用户可以使用以下阿里云镜像加速部署,提升拉取速度: 使用国内镜像需要修改以下文件: 📄 步骤 1:修改 📄 步骤 2:修改 💡 根据实际需求选择以下两种部署方式之一: ✨ 适用于快速部署和生产环境。 按照上述【国内镜像加速】章节修改 🛠️ 适用于需要修改代码或调试的场景。 📥 步骤 1:克隆仓库并构建镜像 ⚙️ 步骤 2:配置镜像名称 修改 ✅ 完成上述配置后,执行以下命令启动服务: 🌐 访问界面 服务启动完成后,在浏览器中访问以下地址: 登录 RAGFlow 后,点击右上角头像,进入用户设置 → 模型提供商。 找到 TextIn 卡片,点击添加模型,填写以下配置信息: 点击 验证 按钮测试连接,验证通过后点击 添加 保存配置。 在 RAGFlow 主界面创建新知识库,或打开已有知识库。 进入知识库的 设置 页面,找到 PDF 解析器 选项。 在下拉列表的 TextIn 分组中,选择刚才添加的模型(标注为 Experimental)。 点击 保存 应用配置。 在知识库中点击 上传文件,选择需要解析的 PDF 文档。 上传完成后,RAGFlow 将自动使用 TextIn API 进行解析。 解析完成后,可在文档详情页查看提取的文本、表格和图像内容。 关键设计: 后端改动文件 前端改动文件 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 内容类型映射 TextIn API 返回结构化的 跨页表格处理 TextIn 通过 解析器会为每个分段生成独立的 position 记录,确保在 RAGFlow UI 中能够正确高亮显示表格的所有分段。 坐标系统转换 TextIn API 使用 144 DPI 坐标系统,而 RAGFlow 使用 72 DPI。解析器会自动进行坐标转换: 这确保了文档高亮位置的准确性。 如需修改 TextIn 集成代码,建议按以下步骤进行本地开发:📝 项目简介
当前基于 RAGFlow v0.24.0 | 插件式集成
设计理念
✨ 核心特性
🚀 快速开始
✅ 前置条件
⚠️ 版本提示:请确保部署的服务镜像版本与 Github 仓库当前 Tag 保持一致,避免版本不兼容问题。
🇨🇳 国内镜像加速
⚙️ 配置方法
docker/.env 文件(RAGFlow 主服务镜像)# 将第 157 行修改为:
RAGFLOW_IMAGE=crpi-2ix4w0sw61gwpv0x.cn-shanghai.personal.cr.aliyuncs.com/intsig_acg/ragflow:v0.24.0docker/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 文件中的镜像地址。🔧 方式二:从源码构建
git clone https://github.com/intsig-textin/xparse-ragflow.git
cd xparse-ragflow
docker build -t your-image-name:tag -f Dockerfile .docker/.env 文件第 157 行:RAGFLOW_IMAGE=your-image-name:tag🚀 启动与访问
cd docker
DEVICE=gpu docker-compose up -dhttp://localhost:{SVR_WEB_HTTP_PORT}💡 默认端口为 80,可在
docker/.env 中通过 SVR_WEB_HTTP_PORT 配置。📘 使用指南
1. 配置 TextIn 解析引擎
步骤 1.1:进入模型提供商设置
步骤 1.2:添加 TextIn 模型
步骤 1.3:验证并保存
2. 在知识库中使用
步骤 2.1:创建或打开知识库
步骤 2.2:选择 TextIn 解析器
3. 解析 PDF 文档
步骤 3.1:上传文档
步骤 3.2:开始解析
步骤 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、索引流程无需任何调整。代码改动概览
❓ 常见问题
📊 文档解析模型评测
🔬 进阶内容
解析行为说明
detail 数组,解析器按以下规则处理不同类型的内容:split_section_page_ids 和 split_section_positions 字段标记跨页拆分的表格。ragflow_coord = textin_coord / 2.0开发者指南
类继承关系
RAGFlowPdfParser (基类)
│
└── TextInParser ← deepdoc/parser/textin_parser.py
│
└── TextInOcrModel ← rag/llm/ocr_model.py本地开发
# 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 等文件
# 重启服务验证效果🔗 相关链接
官方资源