2025-05-16 11:30:02 +08:00
2025-05-16 11:30:02 +08:00
2025-05-16 11:30:02 +08:00
2025-04-16 15:57:16 +08:00
2025-04-16 15:14:41 +08:00
2025-05-14 14:06:27 +08:00
2025-05-16 11:30:02 +08:00
2025-05-14 14:06:27 +08:00
2025-05-14 14:06:27 +08:00

文档处理系统

本系统用于处理和转换文档支持PDF和Word文档的处理。

系统要求

必需组件

  1. Python 3.8 或更高版本

  2. LibreOffice用于文档格式转换

    • 下载地址:https://www.libreoffice.org/download/download/
    • 安装后需要将安装目录(通常是 C:\Program Files\LibreOffice\programC:\Program Files (x86)\LibreOffice\program)添加到系统 PATH 环境变量
    • 如果安装后仍然报错,请尝试重启系统
  3. Tesseract OCR用于图片文字识别

Python 依赖

所有必需的 Python 包都列在 requirements.txt 文件中。使用以下命令安装:

pip install -r requirements.txt

功能特性

  • 支持多种文档格式的处理:
    • PDF 文件
    • Word 文档 (.doc, .docx)
    • HTML 文件 (.html, .htm)
    • Excel 文件 (.xls, .xlsx)
  • 自动提取文档中的表格和图片
  • 智能清理和格式化文本内容
  • 支持多种输出格式:
    • Word 文档 (.docx)
    • 纯文本文件 (.txt)
    • Markdown 文件 (.md)
  • 提供 RESTful API 接口
  • 高级OCR图像识别功能
    • 独立的OCR测试Web界面
    • 多种图像预处理算法
    • 支持中文优化的OCR处理
    • 自动选择最佳OCR结果
    • 直观显示不同处理方法的效果对比
    • 可视化处理前后的图像变化

最近更新

2024年5月21日

  • 增强复杂表格处理的安全性和稳定性
    • 全面优化索引安全处理,解决表格解析中的索引越界问题
    • 增加表格行列索引检查机制,防止数组访问异常
    • 引入垂直合并传播机制,自动填充复杂表格中的间隔空白单元格
    • 增强多级分类表格处理,针对药品分类等特殊表格格式的优化
    • 改进空白单元格智能填充算法,分析上下文识别合并单元格模式
    • 优化错误日志记录,提供精确的错误位置信息便于问题定位
    • 统一文本和Markdown输出处理逻辑确保不同格式输出的一致性
    • 修复多行多列复杂表格中的内容缺失问题,提高数据完整性

2024年5月20日

  • 增强复杂表格合并单元格识别能力
    • 改进垂直合并单元格的识别逻辑,即使未被正确标记的合并单元格也能被识别出来
    • 特别优化对药品分类等表格中常见的第一列垂直合并单元格的处理
    • 新增内容一致性检测机制,自动识别内容相同但分布在不同行的单元格
    • 添加空白单元格智能填充机制,推断可能的合并单元格内容
    • 统一文本与Markdown表格输出中对合并单元格的处理逻辑
    • 对合并单元格内容进行正确复制,确保表格展示的结构完整性
    • 提高对格式不规范表格的兼容性和处理能力

2024年5月19日

  • 表格处理模块化重构
    • 将表格处理相关代码抽取到独立模块cxs_table_processor.py
    • 实现TableProcessor类,封装所有表格相关的处理功能
    • 保留TableData类作为表格数据的标准存储结构
    • 优化代码结构,提高可维护性和扩展性
    • 改进表格处理模块与主程序的交互接口
    • 实现统一的表格处理方法调用方式
    • 便于后续对表格处理功能的单独升级和优化

2024-05-16

  • 增强了复杂表格处理能力
    • 优化了对合并单元格表格的识别和处理
    • 降低了表格有效性的判断门槛,能够识别更多种类的表格
    • 改进了表格到Markdown的转换添加了HTML格式输出选项
    • 完善了对垂直合并单元格的处理逻辑
    • 增强了表格内容矩阵的构建和处理
    • 优化了药品分类等复杂结构表格的识别
    • 改进了表格文本输出格式,提高可读性

2024-05-15

  • 修复了cxs_doc_cleaner.py中的语法错误
    • 解决了处理文档元素时的try-except块和缩进结构问题
    • 改进了表格和段落处理的代码结构
    • 确保所有异常处理逻辑正确嵌套
    • 优化了错误信息输出格式

2024-05-12

  • 修复了Table类初始化错误问题
    • 创建了自定义TableData类代替直接使用docx.table.Table
    • 解决了Table.__init__() missing 2 required positional arguments: 'tbl' and 'parent'错误
    • 重构了相关代码以适配新的类结构
    • 优化了列属性处理方式
    • 改进了单元格访问方法
  • 添加了test_big_file.py工具
    • 专门用于从大型复杂Word文档中提取表格
    • 支持自动识别文档中的所有表格
    • 实现了更强大的表格内容提取逻辑
    • 可以处理合并单元格和复杂结构
    • 生成格式友好的表格文本输出

2024-05-02

  • 修复文档中图片OCR无法识别的问题
    • 添加pytesseract显式导入确保OCR组件可用
    • 优化Tesseract OCR路径自动检测和配置流程
    • 增加pytesseract版本检测机制确保OCR组件正常工作
    • 改进OCR处理流程添加直接调用pytesseract模式不再完全依赖pdf_processor
    • 添加多重OCR尝试策略提高图片文字识别成功率
    • 增强OCR错误处理和日志记录便于问题诊断
    • 简化单图片OCR处理逻辑增加文本预览功能
    • 修复PdfProcessor类中缺少_is_valid_image方法的问题解决图片验证失败的错误

2024-01-20

  • 修复文档中图片OCR识别问题
    • 解决了从Word文档中提取的图片无法被OCR识别的问题
    • 增加了Tesseract OCR路径自动检测和配置功能
    • 添加了独立的图片OCR测试工具方便排查问题
    • 优化了图像提取和OCR处理流程提高识别成功率
    • 增强了图像预处理算法,改进对不同格式图片的支持
    • 新增fix_tesseract_path.py脚本提供一键修复和测试功能

2024-01-19

  • 修复Word文档图像提取和OCR功能
    • 修复了Word文档处理流程中图像提取功能未被正确调用的问题
    • 增强了调试日志系统提供更详细的图像提取和OCR处理信息
    • 优化了文档处理流程确保图像OCR结果被正确保存和展示
    • 添加了更多统计信息包括图像提取数量和OCR识别成功率
    • 改进了不同文件格式的处理逻辑,确保最大兼容性
    • 增强了错误处理能力,提高了系统的鲁棒性和稳定性

2024-01-18

  • 增强了DOCX文档中图像的提取与OCR识别能力
    • 实现了三种不同的图像提取方法确保各种格式的Word文档中的图像都能被正确提取
    • 为图像提取和OCR处理添加了全面的调试日志记录每个步骤的处理结果
    • 增加了原始图像和处理后图像的保存功能便于分析OCR失败的原因
    • 优化了图像过滤机制,自动识别并排除无效的小图像和非图像文件
    • 引入中文优化的二次识别机制,提高中文图像的文字识别率
    • 添加了详细的处理统计信息,包括成功识别率和处理时间
    • 改进了错误处理和异常报告,提高系统稳定性
  • 增加了中文OCR专用图像优化模块 _optimize_for_chinese.py
    • 提供9种针对中文文本的图像处理方法适用于不同场景
    • 支持图像倾斜校正,提高不规则拍摄图像的识别率
    • 针对中文笔画特点优化的形态学处理算法
    • 提供一体化的中文OCR预处理流程
    • 自动判断最佳处理方法优化OCR结果

2024-01-17

  • 新增OCR测试Web界面便于快速测试图像文字识别效果
    • 开发了独立的OCR API服务支持多种图像处理模式
    • 引入自动选择最佳OCR结果的机制通过对比不同处理方法的结果选择最优方案
    • 可视化展示图像处理细节和实时预览效果
    • 简化OCR测试流程支持拖放上传图像并一键处理
    • 提供快速启动脚本,自动检查环境和依赖
    • 优化调试文件存储和显示,方便问题分析

2024-01-16

  • 大幅增强了OCR图像识别能力提高了复杂图像的文字识别率
    • 引入了9种新的图像预处理方法并自动进行组合尝试
    • 新增图像纠偏和倾斜校正,提高对歪斜文本的识别能力
    • 增加针对中文处理的专项优化
    • 增加超高DPI处理提高小字体和复杂字符的识别率
    • 引入基于PSM模式的多方案OCR处理自动选择最佳结果
    • 改进OCR结果评估机制综合考虑文本长度和置信度
    • 增加图像处理调试功能,自动保存处理前后的图像用于分析
    • 优化OCR结果报表提供各种处理方法的对比和详细统计

2024-01-15

  • 增强了OCR功能
    • 改进了PDF处理器中的OCR文本识别功能
    • 增强了Tesseract OCR路径检测
    • 添加了OCR识别重试机制

2024-01-14

  • 优化文档图片OCR识别功能大幅提升Word文档内图片文本识别率
  • 增强图片处理逻辑,添加文件类型验证,防止非图片文件误处理
  • 增加OCR失败重试机制提高文本识别成功率
  • 添加更多调试信息,帮助排查图片处理问题
  • 改进Markdown输出中图片显示方式正确标识无法识别文本的图片

2024-01-13

  • 添加openpyxl依赖库修复Excel文件处理的依赖问题
  • 更新requirements.txt文件确保Excel文件可以正确读取
  • 优化Excel文件处理逻辑解决处理大型Excel文件时卡住的问题
  • 增加直接处理Excel文件选项不必转换为Word格式
  • 限制处理的Excel行数提高大型文件处理效率
  • 改进临时文件处理机制,增加文件删除重试功能
  • 优化Excel文件句柄管理确保文件资源及时释放

2024-01-12

  • 优化Markdown文档输出格式使其更接近原文排版
  • 改进复杂表格的Markdown转换提高可读性
  • 修复图片无法在Markdown中正确显示的问题
  • 增强文档结构识别,自动识别标题层级

2024-01-11

  • 修复缺少uuid库导入的问题
  • 改进图片目录创建逻辑
  • 优化文件路径处理机制

2024-01-10

  • 新增支持 HTML 文件处理
  • 新增支持 Excel 文件处理
  • 优化文件格式处理逻辑
  • 改进错误处理机制

2024-01-09

  • 新增 Markdown 格式输出支持
  • 优化文件处理逻辑
  • 改进错误处理

安装说明

  1. 克隆项目代码
  2. 安装依赖:
    pip install -r requirements.txt
    
  3. 配置环境变量(可选):
    • OLLAMA_HOSTOllama 服务器地址
    • TESSERACT_CMDTesseract OCR 可执行文件路径

使用说明

文件上传

  • 支持的文件格式:
    • PDF (.pdf)
    • Word (.doc, .docx)
    • HTML (.html, .htm)
    • Excel (.xls, .xlsx)

API 接口

  • 文件上传POST /api/upload
  • 文件下载GET /api/download/{filename}

输出格式

  • Word 文档:response_文件名_output.docx
  • 纯文本文件:response_文件名_output.txt
  • Markdown 文件:response_文件名_output.md

OCR图像识别测试

使用OCR测试功能可以快速测试图像文字识别效果无需处理完整文档。

快速启动方法

  1. 运行项目根目录下的启动脚本:

    python start_ocr_test.py
    

    脚本会自动:

    • 检查必要依赖是否安装
    • 验证Tesseract OCR配置
    • 启动OCR API服务
    • 在浏览器中打开测试界面
  2. 如果自动打开浏览器失败,请手动访问:

    http://localhost:8001/static/ocr_test.html
    

使用方法

  1. 在测试界面上传图片文件(支持拖放上传)

  2. 选择识别语言(默认为中文+英文)

  3. 选择处理模式:

    • 自动模式:自动尝试最佳处理方法
    • 标准模式使用基本OCR处理速度最快
    • 中文优化:专为中文文本优化的处理方法
    • 高级模式:使用多种图像处理方法,并比较结果
  4. 点击"执行OCR"按钮开始处理

  5. 查看处理结果:

    • 识别文本:显示识别出的文本内容
    • 处理详情:显示不同处理方法的结果对比
    • 处理图像:显示处理前后的图像效果

处理模式说明

  • 自动模式:适合大多数图像,自动选择最佳处理方法
  • 标准模式:适合清晰、对比度高的图像,处理速度最快
  • 中文优化:适合包含中文的图像,特别是小字体或模糊的中文文本
  • 高级模式:适合复杂图像,会尝试多种处理方法并选择最佳结果,处理时间较长

注意事项

  1. Excel 文件处理时会将每个工作表转换为单独的章节
  2. HTML 文件会保留基本的文本格式和表格结构
  3. 所有临时文件会保存在 temp 目录下

开发说明

目录结构

doc-etl/
├── cxs/
│   ├── static/         # 前端文件
│   │   └── ocr_test.html  # OCR测试界面
│   ├── main.py         # 主程序
│   ├── cxs_doc_cleaner.py  # 文档处理核心
│   ├── cxs_table_processor.py  # 表格处理模块
│   ├── cxs_pdf_cleaner.py  # PDF处理模块
│   ├── _optimize_for_chinese.py  # 中文OCR优化模块
│   └── ocr_api.py      # OCR API服务
├── temp/
│   ├── uploads/        # 上传文件
│   ├── outputs/        # 输出文件
│   ├── images/         # 临时图片
│   └── debug/          # OCR处理调试图像
├── start_ocr_test.py   # OCR测试启动脚本
└── requirements.txt    # 依赖清单

开发环境

  • Python 3.8+
  • 依赖详见 requirements.txt

图像OCR问题排查

问题: 文档中图片OCR无法识别

如果您遇到文档处理时图片OCR识别失败的问题很可能是因为Tesseract OCR工具的路径配置不正确。系统在初始化时会尝试自动查找Tesseract但如果系统环境变量中没有正确配置OCR功能可能无法正常工作。

解决方案

我们提供了一个修复脚本fix_tesseract_path.py,它可以:

  1. 自动查找系统中已安装的Tesseract OCR
  2. 正确设置Tesseract路径
  3. 处理您的文档并启用图片OCR功能

使用方法:

# 直接处理指定文档
python fix_tesseract_path.py --file 您的文档.docx

# 指定Tesseract路径
python fix_tesseract_path.py --file 您的文档.docx --tesseract "C:\Program Files\Tesseract-OCR\tesseract.exe"

# 交互式模式
python fix_tesseract_path.py

注意事项

  1. 确保已安装Tesseract OCR如未安装请从官方GitHub下载并安装
  2. 安装时选择中文语言包以支持中文OCR识别
  3. 建议将Tesseract添加到系统PATH环境变量中或在配置文件中明确指定路径

手动设置Tesseract路径

如果您希望永久解决这个问题,可以:

  1. 将Tesseract安装目录(通常是C:\Program Files\Tesseract-OCR)添加到系统PATH环境变量
  2. 设置环境变量TESSERACT_CMD为Tesseract可执行文件的完整路径
Description
No description provided
Readme 967 KiB
Languages
Python 93.3%
HTML 6.7%