[开源] 病案翻拍质量自动检测器:面向病案无纸化归档的合规质检工具,支持CLI批量扫描与Web API集成

本项目是专为医院病案室、信息科和医保结算部门设计的图像级质检系统,解决病案翻拍件在无纸化归档前「缺页、模糊、非授权复印」三大合规风险。我们不依赖人工抽检,而是通过多维度图像分析(清晰度/分辨率/对比度)、OCR页码连续性校验、水印模板匹配、翻拍与复印特征识别四大核心机制,自动生成带问题定位的HTML报告、可筛选Excel清单和结构化JSON数据。它同时提供命令行(CLI)快速单图诊断、多进程批量处理、可视化Web服务(FastAPI + Uvicorn)及RESTful API接口,技术栈基于Python 3.8+、OpenCV、Tesseract/PaddleOCR、NumPy与Pandas,所有检测逻辑均可配置阈值与权重,适配不同等级医院的归档标准。
定位与能力范围
我们不做通用图像质检,只聚焦病案场景的刚性要求:必须能判断一页是否该有、是否够清、是否被翻拍过、是否带有效授权水印。因此系统边界非常明确,不处理病历文本内容理解,不替代临床质控规则引擎,也不做原始扫描仪驱动控制。它的输出永远是「这张图是否符合归档图像质量规范」的确定性结论,而非概率建议。所有检测项都对应《电子病历系统功能应用水平分级评价标准》《医疗机构病历管理规定》中关于图像完整性、可读性、来源合法性的条款。例如「缺页检测」不是简单数文件个数,而是用OCR识别每张图中的页码(支持阿拉伯数字、罗马数字、中文格式如“第1页”),再按序列逻辑校验中断、重复、乱序;「非授权复印检测」则专攻摩尔纹、屏幕边框、反光点、灰度异常等翻拍特有痕迹,而非泛泛的“图像失真”。
核心功能模块
系统能力由五个正交模块构成,彼此解耦,可独立启用或组合调用:
|
模块 |
输入对象 |
输出结果 |
典型使用场景 |
|---|---|---|---|
|
图像质量评估 |
单张图像 |
清晰度(拉普拉斯方差)、分辨率(DPI/像素尺寸)、对比度(灰度标准差)三维度分数与等级判定 |
扫描后即时筛查,过滤模糊、低DPI、过暗/过亮图像 |
|
页码连续性校验 |
图像集合(含OCR识别结果) |
缺页、重复页、乱序页、无法识别页四类问题标记及起止位置 |
归档前整套病案完整性核验,支撑“一页不漏”审计要求 |
|
授权水印识别 |
单张图像 + 水印模板PNG |
匹配得分、匹配点数、是否命中授权模板 |
判断是否为院内授权翻拍,拦截外部复印或手机拍摄件 |
|
非授权复印检测 |
单张图像 |
摩尔纹/屏幕边框/反光点/灰度异常四项子分,合成风险等级(无/低/中/高) |
识别手机翻拍屏幕、复印件、扫描件二次翻拍等违规来源 |
|
报告生成引擎 |
JSON检测结果 |
HTML(含图表与问题高亮)、Excel(多Sheet+条件格式)、JSON(结构化字段)三种交付物 |
向病案管理员提交归档质检台账,向信息科提供API对接数据 |
使用与配置方式
我们提供三层使用入口,按需选用:
- 命令行(CLI)
:适合日常抽检、脚本化集成、服务器批量调度
- Web服务(API)
:适合嵌入HIS、EMR、档案系统,实现归档流程自动触发
- 配置文件(YAML/JSON)
:所有检测阈值、权重、OCR语言、并发策略均可外部定义
例如调整清晰度合格线,既可在CLI中临时覆盖:
mrqa scan-single image.jpg --clarity-threshold 150
也可在config.yaml中持久化:
clarity:
threshold: 150.0
甚至用环境变量全局生效:
export MRQA_CLARITY_THRESHOLD=150.0
这种三层配置体系确保一线人员能快速上手,而信息科可统一管控全院质检标准。
环境与运行依赖
系统对运行环境要求清晰且轻量,不捆绑重型中间件:
|
组件 |
要求 |
说明 |
是否必需 |
|---|---|---|---|
|
Python |
3.8+ |
主程序运行环境 |
是 |
|
Tesseract OCR |
可选安装 |
仅当启用页码识别时需要 |
否(可用PaddleOCR替代) |
|
中文语言包 |
tesseract-ocr-chi-sim
或 |
支持“第1页”等中文页码格式 |
否(英文页码可不装) |
|
OpenCV / NumPy / Pandas |
pip install -r requirements.txt |
图像处理与数值计算基础库 |
是 |
|
FastAPI / Uvicorn |
Web服务依赖 |
提供API文档(Swagger UI)与异步任务管理 |
否(CLI模式无需) |
Windows用户安装Tesseract只需下载Mannheim版并加入PATH;Linux(Ubuntu)一行命令即可:
sudo apt-get install tesseract-ocr tesseract-ocr-chi-sim
macOS用户则用Homebrew:
brew install tesseract tesseract-lang
数据与扩展机制
所有检测结果均以结构化JSON为中间态,字段设计直指业务可读性:
- quality.overall_score(综合分)、quality.overall_level(优秀/良好/合格/不合格)
- page_number.page_number(识别出的页码)、page_number.confidence(OCR置信度)
- unauthorized_copy.risk_level(高/中/低/无风险)
- issues.by_type(按问题类型统计:blur/low_resolution/contrast/moire等)
这使得Excel报告能自动映射为「问题清单」「详细结果」「页码序列」三个工作表,并用颜色标注严重程度;HTML报告则内置质量分布饼图、分数柱状图、问题条形图;而JSON可直接被下游系统解析为质控看板数据源。扩展水印模板也极简:只需准备PNG文件,通过-w watermark1.png -w watermark2.png参数传入,或统一放在./watermarks/目录由配置文件指定,系统自动完成模板匹配。
限制与说明
我们坦诚说明当前能力边界,避免误用:
- OCR页码识别效果高度依赖图像质量,若页码区域模糊、倾斜或被遮挡,识别率会下降,此时建议先用CLI的--verbose参数查看原始OCR文本,再针对性优化扫描参数。
- 非授权复印检测对纯黑白复印件的判别强于彩色翻拍,因摩尔纹等特征在彩色图像中易被压缩算法削弱,建议启用reflection_threshold与gray_anomaly_threshold双校验。
- 批量处理内存占用与图像尺寸正相关,处理超大图(如A3幅面300DPI扫描件)时,建议启用--checkpoint-dir保存中间状态,防止单点失败导致全量重跑。
- 所有阈值(如清晰度100.0、DPI 200)均为行业通用起点,实际部署时请依据本院历史归档图像样本,在config.yaml中微调至最适值,而非机械套用。
项目地址:
https://github.com/nexorin9/medical-record-scanner-qa
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐
所有评论(0)