私企档案管理培训:Python自动化档案整理实操全流程
一、环境搭建与依赖安装
在开始私企档案数字化整理之前,必须先配置好Python运行环境及OCR识别引擎。本指南基于Windows 10/11系统编写,核心利用Tesseract-OCR进行图片文字识别,配合Python进行文件批量处理。
1. 安装Python环境
访问Python官网下载稳定版安装包。直接访问 https://www.python.org/downloads/ 下载Python 3.10及以上版本。安装时务必勾选 "Add Python to PATH" 选项,这会自动配置环境变量,避免后续命令行无法识别Python指令。
2. 安装Tesseract-OCR引擎
Python本身不具备OCR能力,需要调用Tesseract引擎。请访问 https://github.com/UB-Mannheim/tesseract/wiki 下载 tesseract-ocr-w64-setup-5.x.x.exe。安装时,务必勾选 Chinese (Simplified) 语言包,否则无法识别中文档案。假设安装路径为默认的 C:\Program Files\Tesseract-OCR。
3. 安装Python依赖库
打开CMD(命令提示符),依次执行以下命令安装所需库。这些库分别用于OCR接口封装、图像处理、Excel生成及文件系统操作。
```bash pip install pytesseract pillow pandas openpyxl shutil ```二、建立标准化档案目录结构
混乱的文件存放是归档难的主要原因。我们需要在D盘根目录下创建一个名为 ArchiveProject 的文件夹,并在其下建立以下标准子目录结构:
- D:\ArchiveProject\input:存放待处理的原始扫描件或照片(支持jpg, png, bmp)。
- D:\ArchiveProject\output:存放处理后的重命名文件。
- D:\ArchiveProject\logs:存放生成的档案索引Excel表。
- D:\ArchiveProject\temp:存放处理过程中的临时文件。
请手动创建上述文件夹,确保路径完全一致,否则后续脚本会报错。
三、核心代码编写与配置
新建一个文本文件,将后缀名改为 archive_bot.py。以下代码实现了从扫描件中提取关键信息(如合同号、日期)、自动重命名、移动文件并生成Excel索引的全过程。
1. 引入库与配置路径

代码开头需要引入相关库,并硬编码Tesseract的安装路径。如果你的安装路径不同,请修改 pytesseract.pytesseract.tesseract_cmd 的值。
```python import os import shutil import pandas as pd import pytesseract from PIL import Image import re from datetime import datetime 强制指定Tesseract可执行文件路径,请根据实际安装位置修改 pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe' 定义工作目录 BASE_DIR = r'D:\ArchiveProject' INPUT_DIR = os.path.join(BASE_DIR, 'input') OUTPUT_DIR = os.path.join(BASE_DIR, 'output') LOG_DIR = os.path.join(BASE_DIR, 'logs') 确保输出目录存在 os.makedirs(OUTPUT_DIR, exist_ok=True) os.makedirs(LOG_DIR, exist_ok=True) ```2. 定义信息提取函数
这是核心逻辑。通过正则表达式从OCR识别出的文本中抓取“合同编号”和“签署日期”。请根据贵司档案的实际编号规则,修改 contract_pattern 中的正则表达式。示例中假设合同号格式为“HT-年份-数字”,日期格式为“YYYY-MM-DD”。
```python def extract_info(text): 定义正则匹配规则,根据实际情况修改 示例:匹配 HT-2023-001 这种格式 contract_pattern = r'(HT-\d{4}-\d{3,4})' 示例:匹配 2023-10-01 这种日期格式 date_pattern = r'(\d{4}-\d{1,2}-\d{1,2})' contract_match = re.search(contract_pattern, text) date_match = re.search(date_pattern, text) contract_no = contract_match.group(1) if contract_match else "未知编号" date_str = date_match.group(1) if date_match else "未知日期" return contract_no, date_str ```3. 定义图像处理与OCR识别
为了保证识别率,建议先将图片转换为灰度并调整大小。Tesseract识别中文需要指定 lang='chi_sim'。
```python def ocr_image(image_path): try: 打开图片并进行预处理(转灰度) img = Image.open(image_path).convert('L') 这里可以添加resize逻辑如果图片过大,例如 img.resize((3000, 4000)) 识别文字,指定中文简体 text = pytesseract.image_to_string(img, lang='chi_sim') return text except Exception as e: print(f"识别文件 {image_path} 失败: {e}") return "" ```四、全流程执行逻辑
此部分代码负责遍历Input文件夹,调用上述函数,执行重命名和归档操作,并将结果记录到列表中,最后导出Excel。
```python def main(): file_records = [] supported_ext = ('.jpg', '.jpeg', '.png', '.bmp') 遍历输入文件夹 for filename in os.listdir(INPUT_DIR): if filename.lower().endswith(supported_ext): input_path = os.path.join(INPUT_DIR, filename) print(f"正在处理: {filename}...") 1. OCR识别 raw_text = ocr_image(input_path) 2. 提取关键信息 contract_no, date_str = extract_info(raw_text) 3. 构造新文件名:合同号_日期.原后缀 name_part = f"{contract_no}_{date_str}" new_filename = f"{name_part}{os.path.splitext(filename)[1]}" output_path = os.path.join(OUTPUT_DIR, new_filename) 4. 处理重名冲突 counter = 1 while os.path.exists(output_path): new_filename = f"{name_part}_{counter}{os.path.splitext(filename)[1]}" output_path = os.path.join(OUTPUT_DIR, new_filename) counter += 1 5. 移动文件 shutil.move(input_path, output_path) 6. 记录数据 file_records.append({ "原始文件名": filename, "新文件名": new_filename, "提取合同号": contract_no, "提取日期": date_str, "归档路径": output_path, "处理时间": datetime.now().strftime("%Y-%m-%d %H:%M:%S") }) 7. 生成Excel索引表 if file_records: df = pd.DataFrame(file_records) excel_path = os.path.join(LOG_DIR, f"档案归档索引_{datetime.now().strftime('%Y%m%d%H%M%S')}.xlsx") df.to_excel(excel_path, index=False) print(f"处理完成!共处理 {len(file_records)} 个文件。") print(f"索引表已生成: {excel_path}") else: print("未找到支持的图片文件。") if __name__ == "__main__": main() ```五、常见报错与解决方案
在实操过程中,新手常会遇到以下两个问题,请对照排查。
1. tesseract is not installed or it's not in your PATH
这是路径配置错误。请检查代码中 pytesseract.pytesseract.tesseract_cmd 的路径是否指向了你电脑上 tesseract.exe 的真实位置。注意路径字符串前要加 r 以避免转义字符问题,例如 r'C:\Program Files\Tesseract-OCR\tesseract.exe'。
2. 识别结果为空或乱码
这通常是因为图片质量差或未下载中文语言包。请检查 C:\Program Files\Tesseract-OCR\tessdata 目录下是否存在 chi_sim.traineddata 文件。如果没有,请从 https://github.com/tesseract-ocr/tessdata 下载该文件并放入该目录。扫描件的分辨率建议在300DPI以上,过低会导致识别率大幅下降。
六、操作落地步骤总结
- 准备阶段:在D盘建立ArchiveProject文件夹及子文件夹,将所有待整理的图片文件放入input文件夹。
- 代码调整:打开 archive_bot.py,根据实际档案特征修改 extract_info 函数中的正则表达式(如将“HT-”改为贵司实际的合同前缀)。
- 执行脚本:在CMD中进入脚本所在目录,运行 python archive_bot.py。
- 结果核对:脚本运行结束后,打开output文件夹查看已重命名的文件,打开logs文件夹查看Excel索引表。
通过以上步骤,私企档案管理人员无需手动录入每一个文件名,仅需核对OCR提取的准确性,即可完成批量化的档案整理与归档,极大提升了管理效率。