处理5个文件
This commit is contained in:
1 parent
0edfceda35
commit
abaa27d505
9 files changed
+1581
-176
No files matched your search
+110
-1
@@ -106,4 +106,113 @@ XingCe/ # 行测
|
||||
```
|
||||
|
||||
## 特殊指令
|
||||
当用户说"分析这个文件"、"总结一下"、"提取重点"等类似指令时,自动按照上述分类框架进行内容整理和归纳,并按照文件组织结构创建相应的Markdown文件。
|
||||
当用户说"分析这个文件"、"总结一下"、"提取重点"等类似指令时,自动按照上述分类框架进行内容整理和归纳,并按照文件组织结构创建相应的Markdown文件。
|
||||
|
||||
## PDF OCR处理规则
|
||||
|
||||
### 技术工具配置
|
||||
当需要处理PDF文件时,使用以下OCR工具链:
|
||||
|
||||
#### 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
|
||||
```
|
||||
|
||||
### PDF处理标准流程
|
||||
|
||||
#### 1. 文本提取脚本(推荐方案)
|
||||
创建`pdf_ocr_processor.py`脚本,使用PyMuPDF:
|
||||
```python
|
||||
import fitz # PyMuPDF
|
||||
import os
|
||||
|
||||
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
|
||||
|
||||
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编码
|
||||
|
||||
#### 3. 文本质量检查
|
||||
- **准确性验证**:检查专业术语、人名、地名、数据的提取准确性
|
||||
- **结构保持**:保留原文的段落结构和逻辑层次
|
||||
- **特殊字符**:处理PDF中的特殊符号、公式、表格
|
||||
|
||||
### 处理后工作流程
|
||||
|
||||
#### 1. 基于真实内容重新整理
|
||||
- **替换推测内容**:用真实提取的内容替换之前基于文件名推测的内容
|
||||
- **保留精华要点**:提取授课老师的核心观点和教学重点
|
||||
- **增强考试针对性**:突出高频考点、真题分析、记忆技巧
|
||||
|
||||
#### 2. 质量对比分析
|
||||
- **准确性提升**:基于真实内容,确保信息准确无误
|
||||
- **内容丰富度**:包含具体案例、数据、公式等详细信息
|
||||
- **实用性增强**:提供记忆口诀、易错提醒、考试技巧
|
||||
|
||||
#### 3. 文档管理更新
|
||||
- **处理记录**:在`processed_files.md`中记录处理详情
|
||||
- **文件归档**:原PDF移动到`doc/processed/`文件夹
|
||||
- **版本标注**:标明"基于真实PDF内容"以区别于推测版本
|
||||
|
||||
### 批量处理规范
|
||||
对于大量PDF文件的处理:
|
||||
1. **分批执行**:每次处理5-10个文件,避免系统负载过高
|
||||
2. **进度跟踪**:实时记录处理进度和质量状况
|
||||
3. **异常处理**:对无法正常提取的文件进行单独处理
|
||||
4. **质量抽检**:随机抽取处理结果进行质量验证
|
||||
|
||||
### 技术替代方案
|
||||
如遇到PyMuFDF无法处理的特殊PDF(如扫描版),启用Tesseract方案:
|
||||
```python
|
||||
import pytesseract
|
||||
from pdf2image import convert_from_path
|
||||
|
||||
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
|
||||
```
|
||||
Reference in new issue
Block a user