Skip to content

Mrduan-cloud/MediRead

Repository files navigation

MediRead · AI 体检报告智能解读平台

MediRead is an AI platform that turns medical check-up reports (image / PDF) into a structured, plain-language interpretation — covering blood routine, urinalysis, liver / kidney function, lipid & glucose panels, tumor markers and more.

Built with FastAPI · LangChain · Ollama · PaddleOCR · Milvus · MySQL · MinIO.

Python FastAPI PaddleOCR License


项目背景 | Background

用户拿到体检报告后,常面临三大痛点:

  • 几十项指标看不懂,专业术语晦涩
  • 异常指标含义难判断,单项偏离≠真实风险
  • 医院专家解读预约难且贵,时效差

MediRead 用户上传体检报告(图片 / PDF),AI 自动完成「指标识别 → 异常解读 → 生活建议 → 就医分级」,覆盖血常规、尿常规、肝肾功能、血脂血糖、肿瘤标志物等常见检验项目。

Patients receive dense, jargon-heavy medical reports without context. MediRead ingests the report (image / PDF), extracts indicators with OCR, retrieves authoritative medical knowledge, and produces a tiered risk interpretation with lifestyle and triage recommendations — all running on a privately-deployed LLM.


核心能力 | Key Features

智能体 / Agent 能力 / Capability
报告解析 Agent 图片 / PDF 双格式输入 · PaddleOCR + 版式识别 · 6 字段抽取 · 指标归一化 + 同义词映射 · 结构化 JSON 归档
医学解读 Agent 医学知识库 RAG · 多指标联合分析 · ReAct 推理 · 四级风险分级 · 就医分级 · 危急值兜底

系统架构 | Architecture

                ┌─────────────────────────────────────────────────────────┐
                │                  FastAPI Gateway (API)                  │
                │           /upload  /parse  /interpret  /history         │
                └────────────────────────┬────────────────────────────────┘
                                         │
                ┌────────────────────────▼────────────────────────────────┐
                │              报告解析 Agent (Parser)                   │
                │  PaddleOCR ──▶ 版式识别 ──▶ 6 字段抽取 ──▶ 归一化      │
                │  指标名/数值/单位/参考范围/性别/年龄 → 结构化 JSON     │
                └────────────────────────┬────────────────────────────────┘
                                         │
                ┌────────────────────────▼────────────────────────────────┐
                │              医学解读 Agent (Interpreter)              │
                │  RAG (BM25+BGE+RRF+Cross-Encoder) ──▶ 多指标联合分析    │
                │  ReAct 多步推理 ──▶ 四级风险 ──▶ 就医分级 ──▶ 兜底     │
                └────────────────────────┬────────────────────────────────┘
                                         │
                ┌────────────────────────▼────────────────────────────────┐
                │ Milvus (向量) · MySQL (业务) · Redis (缓存) · MinIO     │
                │ Ollama (GLM-4-9B-Chat 量化版,本地部署,零外传)         │
                └─────────────────────────────────────────────────────────┘

详细架构图见 docs/architecture.md


技术栈 | Tech Stack

  • OCR:PaddleOCR + 版式识别
  • Agent:LangChain (ReAct) + StructuredTool
  • 大模型:Ollama 私有化部署 GLM-4-9B-Chat 量化版 — 健康数据零外传
  • RAG:BM25 + BGE 向量 多路召回 + RRF 融合 + Cross-Encoder 精排
  • 后端:FastAPI · Pydantic · Tortoise-ORM
  • 数据 / 存储:MySQL · Redis · MinIO · Milvus
  • 部署:Docker · docker-compose

目录结构 | Project Layout

MediRead/
├── app/
│   ├── main.py                 # FastAPI 入口
│   ├── config.py
│   ├── agents/
│   │   ├── parser/             # 报告解析 Agent
│   │   │   ├── ocr.py          # PaddleOCR 调用
│   │   │   ├── layout.py       # 版式识别 (国内主流医院模板)
│   │   │   ├── extractor.py    # 6 字段抽取
│   │   │   ├── normalizer.py   # 指标归一化 + 同义词映射
│   │   │   └── schemas.py
│   │   └── interpreter/        # 医学解读 Agent
│   │       ├── react_chain.py  # ReAct 多步推理
│   │       ├── joint_analysis.py # 多指标联合
│   │       ├── risk_grading.py # 四级风险 + 就医分级
│   │       └── prompts.py
│   ├── rag/                    # 通用 RAG 组件
│   │   ├── ingestion.py
│   │   ├── hybrid_retrieval.py
│   │   └── reranker.py
│   ├── api/
│   ├── core/                   # LLM / Embedding / DB / Storage
│   ├── data/
│   │   └── synonyms.json       # 指标别名词典
│   └── schemas/
├── docs/
├── scripts/
├── tests/
├── docker-compose.yml
├── requirements.txt
└── .env.example

快速开始 | Quick Start

完整的「个人电脑 / 企业私有化服务器」部署文档(含信创 / 离线 / 医疗数据合规清单)见 docs/DEPLOYMENT.md。 下面是 6 行命令快起版本。

git clone https://github.com/Mrduan-cloud/MediRead.git && cd MediRead
cp .env.example .env                                         # 编辑 JWT_SECRET_KEY / 密码
docker compose up -d                                         # 拉起 MySQL/Redis/Milvus/MinIO/Ollama/API
docker compose exec ollama ollama pull glm4:9b-chat-q4_0    # 拉取本地 LLM (~6GB,关键)
docker compose exec api python -m scripts.seed              # 初始化 DB + 医学 KB + Demo 报告
docker compose exec api python -m scripts.demo              # 跑端到端 demo

打开:

推荐配置 / Hardware

场景 CPU 内存 磁盘 GPU 模型
个人电脑开发 8 核+ 32 GB 200 GB SSD 可选 (CPU 也能跑,单页 10–30s) glm4:9b-chat-q4_k_m
小公司生产 ⭐ 16 核 64 GB 500 GB+ SSD 单卡 RTX 4090 24G GLM-4-9B-Chat GGUF Q4_K_M
中型企业生产 16 核 128 GB 1 TB+ SSD A10 24G / L20 48G / A100 40G+ 同上 / 升级到 9B FP16 / 14B

默认面向小公司私有化场景:单卡 RTX 4090(约 2 万整机)+ GLM-4-9B-Chat Q4_K_M (Ollama),单一医院/体检中心私有化部署即可回本。 硬件成本对照、ROI 测算、按公司阶段选配指南:docs/HARDWARE.md ⚠️ 医疗数据合规:MediRead 处理敏感健康数据,生产部署必须严格遵循 docs/DEPLOYMENT.md §3.5 医疗数据保护清单


关键设计要点 | Design Highlights

1. 多模板 OCR 解析

  • 图片 / PDF 双格式输入
  • PaddleOCR + 版式识别适配国内主流医院与体检中心的报告模板
  • 抽取 6 类核心字段:指标名 / 数值 / 单位 / 参考范围 / 性别 / 年龄
  • Pydantic + JSONSchema 强约束输出结构化 JSON,归档 MinIO

2. 指标归一化与同义词映射

针对中英文别名做归一化,跨报告指标对齐 → 支持多次报告趋势对比与异常自动标记:

别名 标准名
GGT γ-谷氨酰转移酶
HDL-C 高密度脂蛋白胆固醇
ALT (GPT) 丙氨酸氨基转移酶
AST (GOT) 天门冬氨酸氨基转移酶

词典源:公开医学词典 + 自建别名词典。

3. 多指标联合分析

单一指标异常与多指标联合异常采用不同解读策略,避免「单指标偏离一律打高风险」误判:

例:ALT + AST + GGT 三项联动判定肝损伤迹象。

基于 LangChain ReAct 模式编排 LLM 多步推理。

4. 风险分级 + 就医分级

风险等级 触发条件 建议
轻度偏离 单项轻度超界 / 参考下限附近 调整饮食与作息
关注观察 多项轻度偏离 / 单项中度偏离 1–3 个月复查
建议复查 单项明显偏离 + 关联指标异常 2–4 周复查
建议就医 危急值 / 多项联动重度异常 全科 / 专科

危急值兜底(如肿瘤标志物显著升高)强制触发「建议尽快就诊专科」话术。

5. 私有化部署 — 健康数据零外传

通过 Ollama 私有化部署 GLM-4-9B-Chat 量化版,所有用户体检数据均在内网处理,不出本地。


API 一览 | API Overview

路径 方法 说明
/api/upload POST 上传体检报告(image / pdf)
/api/parse/{report_id} POST 触发 OCR 解析与结构化抽取
/api/interpret/{report_id} POST 触发医学解读 + 风险分级
/api/history/{user_id} GET 多次报告趋势对比

完整 schema 见 /docs (Swagger UI)。


知识库 | Knowledge Base

  • 《中国成人体检基本项目专家共识》
  • 《临床检验项目大全》
  • 公开权威医学指南与共识

元数据增强:检验项目 / 系统分类 / 风险等级 / 适用人群

检索链:BM25 + BGE 向量混合检索 → RRF 融合 → Cross-Encoder 精排


License

MIT © 2024-2025 Mrduan-cloud

About

体检报告智能解读平台 · OCR + RAG + Agent

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors