doc-etl/README.md
2025-05-21 10:57:19 +08:00

861 lines
36 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 文档处理系统
本系统用于处理和转换文档支持PDF和Word文档的处理。
## 系统要求
### 必需组件
1. Python 3.8 或更高版本
2. LibreOffice用于文档格式转换
- 下载地址https://www.libreoffice.org/download/download/
- 安装后需要将安装目录(通常是 `C:\Program Files\LibreOffice\program``C:\Program Files (x86)\LibreOffice\program`)添加到系统 PATH 环境变量
- 如果安装后仍然报错,请尝试重启系统
3. Tesseract OCR用于图片文字识别
- 下载地址https://github.com/UB-Mannheim/tesseract/wiki
- 安装时选择"添加到系统路径"选项
### Python 依赖
所有必需的 Python 包都列在 `requirements.txt` 文件中。使用以下命令安装:
```bash
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年6月15日
- **移除文档中的图片标题**
- 移除了清洗后文档中的"图1"、"图2"等图片标题
- 保留图片在文档中的原始位置和显示
- 简化文档结构,使文档更加简洁
- 优化图片处理流程,确保只保留图片内容
- 保持文本输出中的图片引用标记,但不再显示编号
- 更接近于用户预期的输出效果
### 2024年6月14日
- **优化图片处理,保持原始位置且直接嵌入**
- 改进图片处理逻辑,保持图片在原始文档中的相对位置
- 不再生成外部images目录直接将图片嵌入到清洗后的文档中
- 智能识别原始文档中图片与文本的关联关系,确保图片插入的位置更合理
- 直接从内存中的图片数据创建图片对象,提高处理速度
- 简化图片说明caption格式不再显示文件名只保留编号信息
- 针对无法确定原始位置的图片,统一添加到文档末尾
- 图片处理过程更加稳定,避免因外部文件操作导致的错误
- 提升用户体验,文档外观更加接近原始文档
### 2024年6月13日
- **修复清洗后Word文档图片丢失问题**
- 增加了图片提取和保存功能确保清洗后的Word文档保留原始图片
- 使用多种方法提取文档中的图片支持多种图片格式PNG、JPG、GIF、BMP等
- 智能过滤无效和过小的图片,只保留有意义的内容
- 自动在段落间均匀分布图片,保持文档的可读性和美观性
- 为每张图片添加标题和编号,方便引用
- 所有图片保存在独立的images目录便于管理和查看
- 在文本输出中添加图片引用标记,保持文档内容的完整性
- 增强文档处理流程的稳定性,防止因图片处理错误导致的中断
### 2024年6月12日
- **TXT文件表格输出HTML标签**
- 改进表格处理逻辑使TXT文件中的表格也能以HTML标签形式输出
- 保持与Word文档中的表格输出格式一致提供结构化的表格内容
- 优化TXT文件处理流程正确保留HTML标签而不是转换为纯文本
- 确保表格的合并单元格属性和结构信息在TXT文件中也能被完整保留
- 保持HTML标签在TXT文件中的原始格式不进行换行符替换
- 改进文本合并逻辑智能区分普通文本和HTML标签内容
- 简化用户使用流程,无需额外操作即可获得格式一致的输出文件
- 提高系统处理效率和文档格式统一性
### 2024年6月11日
- **同时支持HTML标签显示和HTML文件生成**
- 优化表格处理功能,兼顾多种输出需求
- 移除Word文档中自动添加的表格标题保持文档结构简洁
- Word文档中直接以HTML标签形式显示所有表格方便查看表格结构
- 同时生成独立的HTML文件提供完整的表格视图支持交互和打印
- 在Word文档中添加蓝色超链接提示指引用户查看对应的HTML文件
- 改进HTML样式增强响应式布局和打印支持
- 优化表格HTML标签生成过程确保标签规范性和一致性
- 增强错误处理,即使某些表格转换失败也能保持系统稳定
- 提升整体文档处理流程的健壮性和用户体验
### 2024年6月10日
- **采用HTML标签形式输出表格**
- 改进表格处理机制直接输出HTML标签形式的表格而非创建Word表格
- 精确保留所有表格结构信息,包括表头、主体和合并单元格属性
- 自动为表格生成符合HTML规范的标签包括class和id属性
- 正确处理表格中的垂直和水平合并单元格添加rowspan和colspan属性
- 将表格标签以等宽字体显示,提高可读性和直观性
- 优化标签生成过程严格遵循HTML表格标准
- 自动区分表头和数据行使用正确的thead和tbody标签
- 简化表格处理流程,提高效率和准确性
### 2024年6月9日
- **改进Word文档表格显示方式**
- 修改表格处理机制直接在Word文档中显示表格不再需要外部HTML文件
- 准确复制原始表格的结构、内容和合并单元格信息
- 保留表格样式并自动设置表头格式
- 正确处理垂直和水平合并的单元格
- 改进表格位置控制,保持与原始文档的一致性
- 优化表格边框和样式,提供更专业的外观
- 简化处理流程,提高文档生成效率
- 修复合并单元格时的潜在错误
### 2024年6月8日
- **修复Word文档打开问题并改进表格处理**
- 解决了清洗后Word文档无法打开的关键问题
- 优化HTML表格生成方式确保文档处理的稳定性
- 在Word文档中添加醒目的HTML表格文件引用提示
- 保留表格的文本格式作为备用显示方式
- 改进错误处理,提供更详细的诊断信息
- 简化文档处理流程,提高代码可维护性
- 增强HTML表格文件的样式提供更好的打印支持
- 改进文档处理日志,便于追踪处理过程
### 2024年6月7日
- **表格直接HTML输出功能增强**
- 修改表格处理机制现在所有表格都将以HTML格式输出而非文本格式
- 彻底解决复杂表格的显示问题,包括多层表头和合并单元格
- 自动为每个表格生成独特的HTML标识符确保正确引用
- 提供更美观的表格样式,包括悬停效果和自适应宽度
- 改进表格边框和单元格间距,提升阅读体验
- 保留单元格格式化内容如换行符并在HTML中正确显示
- 针对打印场景优化表格样式,确保打印输出质量
- 技术说明由于Word文档格式限制HTML表格将保存在独立的HTML文件中
### 2024年6月6日
- **增强复杂表格识别与处理能力**
- 优化表格类型自动识别算法,通过多维度特征分析提高复杂表格的识别精度
- 增强表格结构分析能力,支持更精确地识别垂直和水平合并单元格
- 改进多级表头处理,提高复杂表头的识别和解析能力
- 引入表格宽高比分析,自动识别宽表格和复杂结构表格
- 新增单元格数一致性检查机制,提高对不规则表格的处理能力
- 优化垂直合并单元格的内容填充算法,改进空单元格的值传播机制
- 添加更详细的表格处理日志,便于诊断和调试复杂表格处理问题
- 完善异常处理,提高处理复杂表格时的稳定性和鲁棒性
### 2024年6月5日
- **模块化表格处理系统升级**
- 重构了表格处理架构,将不同类型的表格处理逻辑拆分为专门的处理器
- 实现了针对五种特殊表格类型的专用处理器:
- 多级表头表格处理器:处理具有复杂多级表头结构的表格
- 合并单元格密集型表格处理器:优化处理含有大量合并单元格的表格
- 带计算功能的表格处理器:识别并处理包含公式和计算的表格
- 嵌套表格处理器:处理表格内嵌套的子表格结构
- 跨页长表格处理器:正确识别和处理跨越多页的长表格
- 优化表格识别机制,智能匹配最适合的处理器
- 提高表格转文本的准确性和可读性
- 保持与原有系统的兼容性,同时提高处理复杂表格的能力
- 增强了系统对特殊表格结构的识别率和处理精度
### 2024年6月2日
- 改进Markdown表格转换功能
- 修复了合并单元格内容重复显示的问题
- 修复了空单元格自动填充相邻值的问题
- 优化表格处理逻辑,正确处理多级表头和复杂表格结构
- 确保合并单元格的内容仅在原始单元格位置显示,被合并的单元格保持为空
### 2024年6月1日
- **修复服务端文件处理过程中的类型错误**
- 解决文件处理后删除临时文件时出现的`'dict' object has no attribute 'strip'`错误
- 增强了`main.py`中处理文本内容时的类型安全性,确保只对字符串类型调用字符串方法
- 添加了对处理文件时`all_content`合并时的严格类型检查,实现对混合内容类型(字符串、字典等)的安全处理
- 优化了临时文件和目录清理过程,增加类型检查以避免对非字符串类型执行路径操作
- 改进临时文件删除的安全性,使用`safe_delete_file`函数确保字符串类型参数
- 提高了文件处理后清理逻辑的健壮性,避免因类型不匹配导致的处理中断
- 完善错误处理机制,提供更详细的日志信息,便于快速定位问题
### 2024年5月31日
- **修复表格文本提取过程中的类型错误**
- 解决了在无效表格转换为文本时出现的`'dict' object has no attribute 'strip'`错误
- 增强了`save_as_docx`方法中对`_extract_table_text`返回值的类型安全检查
- 确保只有在返回值是字符串类型时才调用`strip()`方法
- 优化了表格文本提取的错误处理流程,提高系统处理复杂表格的稳健性
- 完善了不同表格类型的处理逻辑,确保各种特殊结构表格都能被正确处理
- 修复了在表格无效时可能触发的类型错误,保证表格处理流程不会因类型不匹配而中断
### 2024年5月30日
- **修复文本清理过程中的类型错误**
- 解决了在文本清理过程中出现的`'dict' object has no attribute 'strip'`错误
- 增强了`_clean_text`方法中的类型检查,确保只对字符串类型对象调用字符串方法
- 改进了文本文件生成逻辑,添加针对不同数据类型的处理策略
- 优化了元数据字典的内容提取方式,确保其正文内容能够被包含在文本输出中
- 提高了代码的健壮性,可以正确处理混合类型的内容列表
- 完善了错误处理机制,避免因类型不匹配导致的处理中断
### 2024年5月29日
- **修复文档去重处理异常**
- 解决了处理带元数据的文档时出现的`'dict' object has no attribute 'startswith'`错误
- 增强了_remove_duplicates方法使其能够正确处理字典类型的元数据结构
- 改进了内部类型检查,区分处理字符串、字典、元组和列表等不同数据类型
- 优化了去重机制,保证包含元数据的文档正常处理不会中断
- 更新了相关方法的类型提示,明确方法可以处理任何类型的元素
- 完善对特殊数据类型的保留逻辑,确保元数据不会在去重过程中丢失
### 2024年5月28日
- **增强复杂表格结构处理能力**
- 实现多级表头表格的自动识别与处理支持最多4级嵌套表头
- 完善对复杂表头结构的分析,正确处理跨行跨列的表头单元格
- 针对多级表头表格优化Markdown输出格式保持原始表格的层次结构
- 改进表格预处理流程,添加表格结构类型自动检测功能
- 优化合并单元格处理逻辑,确保复杂表格数据的完整性和准确性
- 引入表格元数据记录机制,保存表格结构特征以便后续处理
- 完善复杂表格的调试日志,便于排查处理过程中的问题
### 2024年5月27日
- **修复表格处理异常错误**
- 解决了处理特殊表格时出现的`'dict' object has no attribute 'strip'`类型错误
- 增强了内容过滤函数的类型安全检查,避免对非字符串类型应用字符串方法
- 改进了对多种数据类型(字典、元组、列表等)的兼容性处理
- 确保在处理表格时不会因类型错误而导致文档处理中断
- 优化了错误处理机制,提供更详细的错误信息以便于调试
- 提高了代码的健壮性,能更好地处理各种格式和结构的输入数据
### 2024年5月26日
- **增强特殊结构表格处理能力**
- 优化对特殊格式表格的识别能力,特别是键值对形式的表格(如账号、订单号等信息表)
- 新增键值对表格专用渲染模式,确保所有键值对数据都被正确提取
- 改进单元格内容提取逻辑,避免遗漏特殊格式的单元格内容
- 引入表格结构智能分析,自动识别不同类型的表格并应用最合适的处理方法
- 完善对"PO-Number"、"Account No."等业务类信息字段的特殊处理
- 添加了多种关键字模式匹配,提高对各类业务表格的兼容性
- 优化文本提取过程,确保每个文本片段都能被完整保留
### 2024年5月25日
- **优化Markdown表格格式输出**
- 严格按照原文档中的表格格式输出Markdown表格保留空单元格
- 去除过度智能填充功能,避免自动填充空单元格导致的格式不一致
- 保留完整表格结构,包括所有的空行
- 只处理显式标记的合并单元格,不进行推断性的内容填充
- 确保表格的每个单元格精确反映原始文档中的内容
- 简化表格处理逻辑,提高处理速度和准确性
### 2024年5月24日
- **优化Markdown输出格式**
- 移除Markdown输出中的文档元数据信息如创建时间、作者、备注等
- 保留DOCX和TXT输出中的文档元信息不影响其完整性
- 重构元数据处理逻辑,使用类型标记区分不同内容类型
- 提高代码的可维护性和扩展性
- 优化内部数据结构,便于后续自定义输出格式
- 改进文本处理流程,统一处理文本和结构化内容
### 2024年5月23日
- **修复PDF转Word时图片丢失的问题**
- 增加了多种图片提取方法确保即使在PDF转DOCX过程中丢失图片也能正确保留
- 直接从PDF源文件提取图片不再完全依赖转换后的DOCX文档
- 改进图片处理流程确保OCR结果被正确保存到最终输出
- 增强Markdown图片处理逻辑优化图片路径管理和文件复制过程
- 添加详细日志和错误诊断信息,便于问题排查
- 优化图片文件存储结构,避免图片重复处理
- 增加图片处理失败时的备选方案,提高系统鲁棒性
- 解决Markdown文档中图片无法显示的问题
### 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 格式输出支持
- 优化文件处理逻辑
- 改进错误处理
### 2024年6月3日
- 优化表格数据处理逻辑:
- 重构format_group_to_text函数采用更通用的处理方式
- 移除对特定字段名的依赖,提高代码灵活性
- 自动清理和格式化字段名中的特殊字符
- 统一的文本格式化逻辑,适应不同数据结构
- 改进键值对处理方式,支持更多数据格式
- 自动清理"表格无有效数据"等无效提示信息
- 优化文本拼接逻辑,确保输出格式的一致性
## 安装说明
1. 克隆项目代码
2. 安装依赖:
```bash
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. 运行项目根目录下的启动脚本:
```bash
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功能
使用方法:
```bash
# 直接处理指定文档
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](https://github.com/UB-Mannheim/tesseract/wiki)下载并安装
2. 安装时选择中文语言包以支持中文OCR识别
3. 建议将Tesseract添加到系统PATH环境变量中或在配置文件中明确指定路径
### 手动设置Tesseract路径
如果您希望永久解决这个问题,可以:
1. 将Tesseract安装目录(通常是`C:\Program Files\Tesseract-OCR`)添加到系统PATH环境变量
2. 设置环境变量`TESSERACT_CMD`为Tesseract可执行文件的完整路径
# 文档表格处理工具
本工具提供了强大的表格数据处理功能,可以处理文档中的各种类型表格。
## 主要功能
### 1. 表格数据处理
- 表格数据验证和清理
- 表格结构规范化
- 表格数据增强
- 表格布局优化
### 2. 数据转换和分析
- 表格转换为字典格式
- 表格内容分析
- 基本统计信息
- 列数据分析
- 数据模式检测
- 结构特征分析
- 内容质量评估
- 重复值检测
- 值分布分析
- 列相关性分析
- 数据一致性检查
- 潜在问题检测
### 3. 格式转换
- 转换为CSV格式
- 转换为Excel格式
- 转换为Markdown格式
- 转换为HTML格式
### 4. 高级功能
- 多级表头处理
- 合并单元格处理
- 键值对表格处理
- 数据类型自动识别
- 表格结构优化
## 使用示例
```python
from cxs.cxs_table_processor import TableProcessor
# 创建处理器实例
processor = TableProcessor()
# 处理表格数据
table_data = {
'rows': [...],
'header_rows': 1
}
# 数据转换
dict_data = processor._convert_table_to_dict(table_data)
# 内容分析
analysis = processor._analyze_table_content(table_data)
# 检测数据模式
patterns = processor._detect_table_patterns(table_data)
# 导出为不同格式
csv_data = processor._convert_table_to_csv(table_data)
excel_data = processor._convert_table_to_excel(table_data)
```
## 数据转换能力
支持以下数据转换:
1. 表格 -> 字典
- 支持键值对表格
- 支持普通表格结构
- 支持多级表头
2. 表格 -> CSV
- 自动处理表头
- 处理合并单元格
- 支持自定义分隔符
3. 表格 -> Excel
- 保留表格结构
- 处理合并单元格
- 自动调整列宽
- 设置表头样式
4. 表格 -> Markdown/HTML
- 格式化输出
- 保持表格结构
- 支持样式设置
## 开发要求
- Python 3.7+
- 依赖包:
- openpyxl
- pandas
- numpy
## 安装说明
```bash
pip install -r requirements.txt
```
## 更新日志
### v1.0.0
- 初始版本发布
- 基本的表格处理功能
### v1.1.0
- 添加数据验证和清理功能
- 增加表格结构规范化
### v1.2.0
- 添加数据转换功能
- 支持多种输出格式
### v1.3.0
- 添加内容分析功能
- 增加数据模式检测
- 优化表格处理性能
### 2024-03-xx
- 优化了表格处理器的稳定性和错误处理
- 增加了严格的索引检查和边界处理
- 改进了单元格和行级别的错误处理机制
- 增强了对大型表格和复杂表头的支持
- 优化了表格规范化处理
- 提高了处理不规则表格的兼容性
- 改进了内存使用效率
## 注意事项
1. 大文件处理
- 建议分批处理大型表格
- 注意内存使用
2. 数据验证
- 建议在处理前进行数据验证
- 检查表格结构完整性
3. 错误处理
- 所有方法都包含错误处理
- 详细的错误信息输出
## 贡献指南
1. Fork 项目
2. 创建特性分支
3. 提交变更
4. 发起 Pull Request
## 许可证
MIT License
## 更新日志
### 2024-03-21
- 修复了文本分段工具的命令行参数问题
- 现在支持使用相对路径处理文件
- 新增txt格式输出支持默认输出格式改为txt
- 优化了段落分隔显示,使用空行分隔各段落
- 全新的智能语义分段功能:
- 支持基于章节标题的主要分段
- 支持基于语义转折词的次要分段
- 智能识别特殊段落(如摘要、引言等)
- 自动合并过短段落,保持语义完整性
- 优化的中文标点符号处理
- 添加token长度控制
- 确保每个段落不超过512个token
- 智能估算中英文混合文本的token数量
- 对超长句子进行智能拆分
- 在保持语义完整性的同时控制token数量
- 优化表格内容处理:
- 自动移除表格标记(如"表格1开始"、"表格1结束"
- 智能分割长表格内容确保每段不超过token限制
- 保持表格行的语义完整性
- 使用逗号和分号作为表格内容的分割点
- 优化表格段落的可读性
## 使用方法
### 文本分段工具
基本用法输出txt格式
```bash
python text_paragraph_splitter.py sample_continuous_text.txt
```
指定输出文件:
```bash
python text_paragraph_splitter.py sample_continuous_text.txt -o output.txt
```
输出JSON格式
```bash
python text_paragraph_splitter.py sample_continuous_text.txt -f json -o output.json
```
参数说明:
- input_file输入文件路径例如sample_continuous_text.txt
- --output/-o输出文件路径默认为当前目录下的 paragraphs.txt
- --format/-f输出格式支持txt和json默认为txt
分段规则说明:
1. Token长度控制
- 每个段落严格控制在512个token以内
- 中文字符按1.5个token计算
- 英文单词按1个token计算
- 标点符号按1个token计算
- 超长句子会按逗号智能拆分
2. 表格处理:
- 自动识别并移除表格标记
- 按行处理表格内容
- 智能合并短行不超过token限制
- 对超长行进行分割处理
- 保持表格内容的语义连贯性
3. 主要分段标记:
- 章节标题(如"第一章"、"第1节"等)
- 序号标记(如"一、"、"1."、"1"等)
- 罗马数字标记(如"I."、"II."等)
4. 次要分段标记:
- 语义转折词(如"然而"、"但是"、"因此"等)
- 总结性词语(如"总的来说"、"综上所述"等)
- 举例词语(如"例如"、"比如"等)
5. 特殊段落:
- 自动识别摘要、引言、结论等特殊段落
- 保持这些段落的独立性
6. 智能合并:
- 合并过短的段落小于50字
- 确保合并后不超过token限制
- 保持标题等特殊标记的独立性
- 确保段落语义的完整性
### 2024-03-xx
- 重写了表格处理逻辑,增强了对复杂表格的处理能力
- 使用@dataclass重新设计了表格数据结构Cell、Row、Table类
- 支持多级表头和合并单元格的识别
- 自动识别表格类型(标准表格、键值对、矩阵等)
- 支持特殊格式(货币、百分比、日期等)的识别和转换
- 增加了表格处理的错误处理和容错机制
- 优化了表格输出格式支持Markdown、HTML和字典格式
- 添加了表格处理的调试信息输出
- 更新了导入路径使用新的table_processor模块
### 2024年3月
- 优化表格处理逻辑:
- 修复复杂表头和矩阵类型表格的索引越界问题
- 增强表格行和单元格的错误处理机制
- 改进表头结构分析,支持多级表头识别
- 优化矩阵类型表格的检测算法
- 增加数字单元格识别功能
- 完善表格转文本的格式化处理
- 增加边界检查和异常处理机制
- 优化内存使用和处理效率