第四批处理文件
This commit is contained in:
1 parent
525363dc7f
commit
4bab69039c
7 files changed
+1966
-94
No files matched your search
+72
-94
@@ -168,116 +168,94 @@ XingCe/ # 行测
|
||||
## 特殊指令
|
||||
当用户说"分析这个文件"、"总结一下"、"提取重点"等类似指令时,自动按照上述分类框架进行内容整理和归纳,并按照文件组织结构创建相应的Markdown文件。**务必确保内容的充实性和完整性,不能过度简化。**
|
||||
|
||||
## PDF OCR处理规则
|
||||
## PDF处理规则
|
||||
|
||||
### 技术工具配置
|
||||
当需要处理PDF文件时,使用以下OCR工具链:
|
||||
### 核心原则
|
||||
**禁止使用Python脚本处理PDF**:根据实际使用经验,直接通过工具调用读取PDF文件内容,不创建额外的处理脚本。
|
||||
|
||||
#### 1. 依赖库安装
|
||||
```python
|
||||
# 核心OCR库
|
||||
pip install PyMuPDF # 推荐:简单高效,直接提取PDF文本
|
||||
# 或者使用pytesseract方案(适用于图片型PDF)
|
||||
pip install pytesseract pdf2image pillow
|
||||
```
|
||||
### 标准处理流程
|
||||
|
||||
#### 2. Tesseract OCR引擎安装(Windows)
|
||||
```bash
|
||||
# 使用winget安装(推荐)
|
||||
winget install UB-Mannheim.TesseractOCR
|
||||
# 或手动下载安装:https://github.com/UB-Mannheim/tesseract/wiki
|
||||
```
|
||||
#### 1. PDF文件读取方式
|
||||
- **直接读取**:使用`read_file`工具直接读取PDF文件内容
|
||||
- **完整提取**:必须读取文件的完整内容,不能仅读取部分内容
|
||||
- **内容保真**:保持原文的所有重要信息,包括细节、数据、案例等
|
||||
|
||||
### PDF处理标准流程
|
||||
#### 2. 批量处理规范
|
||||
当用户要求处理多个PDF文件时:
|
||||
- **分批处理**:每次处理5个文件,避免系统负载过高
|
||||
- **并行读取**:使用并行工具调用同时读取多个文件
|
||||
- **完整性检查**:确保每个文件的内容都被完整提取
|
||||
|
||||
#### 1. 文本提取脚本(推荐方案)
|
||||
创建`pdf_ocr_processor.py`脚本,使用PyMuPDF:
|
||||
```python
|
||||
import fitz # PyMuPDF
|
||||
import os
|
||||
#### 3. 内容整理标准
|
||||
基于提取的真实PDF内容:
|
||||
- **全文保留**:不能概括或简化,要保留原文的详细程度
|
||||
- **结构重组**:重新整理内容结构,使其层次清晰、逻辑严密
|
||||
- **分类归档**:按照文件组织结构将内容分类存储
|
||||
- **格式美化**:使用标准Markdown格式,确保美观易读
|
||||
|
||||
def extract_text_from_pdf(pdf_path, max_pages=20):
|
||||
"""从PDF提取文本,限制页数防止处理时间过长"""
|
||||
try:
|
||||
doc = fitz.open(pdf_path)
|
||||
text = ""
|
||||
for page_num in range(min(len(doc), max_pages)):
|
||||
page = doc[page_num]
|
||||
text += page.get_text()
|
||||
doc.close()
|
||||
return text
|
||||
except Exception as e:
|
||||
print(f"处理文件 {pdf_path} 时出错: {e}")
|
||||
return None
|
||||
#### 4. 质量控制要求
|
||||
- **信息完整度** ≥ 95%:重要信息不能遗漏
|
||||
- **内容详实性**:每个知识点都要详细展开
|
||||
- **考试针对性**:突出高频考点、记忆技巧、易错提醒
|
||||
- **实用性标准**:提供充分的实例、案例、应用场景
|
||||
|
||||
def process_pdf_files(input_dir="doc/", output_dir="extracted_texts/"):
|
||||
"""批量处理PDF文件"""
|
||||
if not os.path.exists(output_dir):
|
||||
os.makedirs(output_dir)
|
||||
|
||||
for filename in os.listdir(input_dir):
|
||||
if filename.lower().endswith('.pdf'):
|
||||
pdf_path = os.path.join(input_dir, filename)
|
||||
text = extract_text_from_pdf(pdf_path)
|
||||
if text:
|
||||
output_filename = f"{os.path.splitext(filename)[0]}_extracted.txt"
|
||||
output_path = os.path.join(output_dir, output_filename)
|
||||
with open(output_path, 'w', encoding='utf-8') as f:
|
||||
f.write(text)
|
||||
print(f"成功处理: {filename} -> {output_filename}")
|
||||
```
|
||||
### 处理工作流程
|
||||
|
||||
#### 2. 文件处理要求
|
||||
- **页数限制**:每个PDF最多处理前20页,防止处理时间过长
|
||||
- **文本保存**:提取的文本保存到`extracted_texts/`文件夹
|
||||
- **命名规范**:原文件名 + `_extracted.txt`后缀
|
||||
- **编码格式**:统一使用UTF-8编码
|
||||
#### 第一步:文件识别
|
||||
1. 查看PDF文件列表
|
||||
2. 确定处理批次(每批5个文件)
|
||||
3. 按文件名分析内容类型
|
||||
|
||||
#### 3. 文本质量检查
|
||||
- **准确性验证**:检查专业术语、人名、地名、数据的提取准确性
|
||||
- **结构保持**:保留原文的段落结构和逻辑层次
|
||||
- **特殊字符**:处理PDF中的特殊符号、公式、表格
|
||||
#### 第二步:内容提取
|
||||
1. 使用`read_file`工具完整读取PDF内容
|
||||
2. 并行读取多个文件以提高效率
|
||||
3. 检查提取内容的完整性和准确性
|
||||
|
||||
### 处理后工作流程
|
||||
#### 第三步:内容整理
|
||||
1. 基于真实内容进行分类整理
|
||||
2. 按照公考助手分类框架组织内容
|
||||
3. 重新构建文档结构,确保逻辑清晰
|
||||
|
||||
#### 1. 基于真实内容重新整理
|
||||
- **替换推测内容**:用真实提取的内容替换之前基于文件名推测的内容
|
||||
- **保留精华要点**:提取授课老师的核心观点和教学重点
|
||||
- **增强考试针对性**:突出高频考点、真题分析、记忆技巧
|
||||
- **确保内容充实**:详细展开每个知识点,不能过度概括
|
||||
#### 第四步:文档生成
|
||||
1. 创建结构化的Markdown文档
|
||||
2. 按照文件组织结构存储到相应位置
|
||||
3. 确保格式美观、内容详实
|
||||
|
||||
#### 2. 质量对比分析
|
||||
- **准确性提升**:基于真实内容,确保信息准确无误
|
||||
- **内容丰富度**:包含具体案例、数据、公式等详细信息
|
||||
- **实用性增强**:提供记忆口诀、易错提醒、考试技巧
|
||||
- **完整性保证**:确保重要信息不遗漏,细节充分展开
|
||||
#### 第五步:记录更新
|
||||
1. 在`processed_files.md`中记录处理详情
|
||||
2. 包含文件信息、内容分类、生成位置等
|
||||
3. 标注处理时间和质量状况
|
||||
|
||||
#### 3. 文档管理更新
|
||||
- **处理记录**:在`processed_files.md`中记录处理详情
|
||||
- **文件归档**:原PDF移动到`doc/processed/`文件夹
|
||||
- **版本标注**:标明"基于真实PDF内容"以区别于推测版本
|
||||
### 常见问题处理
|
||||
|
||||
### 批量处理规范
|
||||
对于大量PDF文件的处理:
|
||||
1. **分批执行**:每次处理5-10个文件,避免系统负载过高
|
||||
2. **进度跟踪**:实时记录处理进度和质量状况
|
||||
3. **异常处理**:对无法正常提取的文件进行单独处理
|
||||
4. **质量抽检**:随机抽取处理结果进行质量验证
|
||||
#### 1. 文件读取失败
|
||||
- 检查文件路径是否正确
|
||||
- 确认文件格式是否为标准PDF
|
||||
- 尝试分段读取较大的文件
|
||||
|
||||
### 技术替代方案
|
||||
如遇到PyMuFDF无法处理的特殊PDF(如扫描版),启用Tesseract方案:
|
||||
```python
|
||||
import pytesseract
|
||||
from pdf2image import convert_from_path
|
||||
#### 2. 内容提取不完整
|
||||
- 增加读取的行数范围
|
||||
- 检查是否有分页或特殊格式
|
||||
- 确保重要信息没有遗漏
|
||||
|
||||
def ocr_pdf_with_tesseract(pdf_path):
|
||||
"""使用Tesseract OCR处理扫描版PDF"""
|
||||
images = convert_from_path(pdf_path)
|
||||
text = ""
|
||||
for image in images[:20]: # 限制页数
|
||||
text += pytesseract.image_to_string(image, lang='chi_sim')
|
||||
return text
|
||||
```
|
||||
#### 3. 格式处理问题
|
||||
- 处理特殊字符和符号
|
||||
- 保持原文的段落结构
|
||||
- 转换表格和列表格式
|
||||
|
||||
### 禁用技术方案
|
||||
以下方案在实际使用中证明不适用,禁止使用:
|
||||
- ❌ 创建Python脚本进行PDF处理
|
||||
- ❌ 使用PyMuPDF、pytesseract等第三方库
|
||||
- ❌ 生成临时文件或中间处理文件
|
||||
- ❌ 概括或简化原文内容
|
||||
|
||||
### 推荐操作方式
|
||||
✅ 直接使用工具读取PDF文件
|
||||
✅ 完整保留原文所有重要信息
|
||||
✅ 重新整理结构但不简化内容
|
||||
✅ 并行处理多个文件提高效率
|
||||
✅ 详细记录处理过程和结果
|
||||
|
||||
## 质量控制标准
|
||||
|
||||
|
||||
Reference in new issue
Block a user