网站首页/ 信息中心/ 档案百科/

保山档案整理数字化实操:Python批量重命名与OCR归档指南

发布时间:2026年09月09日 04:50:31 浏览量:0

一、开发环境准备与依赖安装

在进行保山档案数字化整理之前,必须先搭建好Python运行环境。本方案基于Python 3.9版本开发,兼容Windows和Linux系统。请勿使用Python 2.x版本,以免出现库兼容性问题。

1. 安装Python环境

访问Python官网下载安装包:https://www.python.org/downloads/release/python-3913/。下载时务必勾选"Add Python to PATH"选项,这将自动配置环境变量,避免后续手动配置的麻烦。

2. 安装核心依赖库

打开命令行工具(Windows下为CMD或PowerShell),依次执行以下命令安装所需第三方库。这里选用PaddleOCR是因为其对中文识别率极高,非常适合保山本地档案中的汉字识别。

pip install paddlepaddle
pip install paddleocr
pip install openpyxl
pip install shutil
pip install os

注意:如果您的电脑没有NVIDIA显卡,PaddlePaddle会自动安装CPU版本,速度稍慢但完全满足日常档案整理需求。

二、项目目录结构规划

为了确保脚本能够准确读取和输出文件,请严格按照以下目录结构在本地创建项目文件夹。假设项目根目录命名为baoshan_archive_tool

baoshan_archive_tool/
├── raw_files/           存放待整理的原始档案图片(JPG/PNG)
├── processed_files/      存放重命名后的档案
├── ocr_results/          存放识别后的文本文件
├── config/               配置文件目录
│   └── mapping.csv       档案重命名映射表
├── output/               最终输出目录
│   └── archive_index.xlsx  最终生成的Excel索引表
└── main.py               核心执行脚本

创建目录命令(Windows CMD):

mkdir baoshan_archive_tool
cd baoshan_archive_tool
mkdir raw_files processed_files ocr_results config output

三、配置档案映射表

档案整理的核心是将无序的文件名转换为规范的档号。我们需要在config目录下创建一个mapping.csv文件。该文件用于定义原始文件名与目标规范档号的对应关系。

mapping.csv 内容格式如下(请使用Excel编辑后保存为CSV格式):

original_filename,target_archive_code
IMG_001.jpg,BS-2023-DW-001
IMG_002.jpg,BS-2023-DW-002
photo_003.png,BS-2023-DW-003

这里BS代表保山,DW代表档案分类代码(如:党务、行政等),001为流水号。请根据实际档案情况修改此CSV文件,确保original_filename列与raw_files文件夹内的文件名完全一致。

四、编写核心处理脚本

在项目根目录下创建main.py文件,并将以下完整代码复制进去。该脚本集成了文件重命名、OCR文字提取和Excel索引生成三个功能。

import os
import shutil
import csv
from paddleocr import PaddleOCR
from openpyxl import Workbook
初始化OCR模型,使用方向分类器提升识别准确率
ocr = PaddleOCR(use_angle_cls=True, lang="ch")
定义路径配置
RAW_DIR = 'raw_files'
PROCESSED_DIR = 'processed_files'
OCR_RESULT_DIR = 'ocr_results'
CONFIG_FILE = 'config/mapping.csv'
OUTPUT_EXCEL = 'output/archive_index.xlsx'
def ensure_dir(directory):
if not os.path.exists(directory):
os.makedirs(directory)
def rename_files():
print("开始执行档案重命名...")
ensure_dir(PROCESSED_DIR)
if not os.path.exists(CONFIG_FILE):
print(f"错误:找不到配置文件 {CONFIG_FILE}")
return
with open(CONFIG_FILE, mode='r', encoding='utf-8-sig') as f:
reader = csv.DictReader(f)
for row in reader:
old_name = row['original_filename']
new_name = row['target_archive_code'] + os.path.splitext(old_name)[1]
old_path = os.path.join(RAW_DIR, old_name)
new_path = os.path.join(PROCESSED_DIR, new_name)
if os.path.exists(old_path):
shutil.copy(old_path, new_path)
print(f"已处理: {old_name} -> {new_name}")
else:
print(f"警告: 原始文件不存在 {old_path}")
def perform_ocr_and_generate_index():
print("开始OCR识别并生成索引表...")
ensure_dir(OCR_RESULT_DIR)
ensure_dir('output')
wb = Workbook()
ws = wb.active
ws.title = "保山档案索引"
ws.append(['档号', '文件名', '识别摘要文本', '完整文本路径'])
files = [f for f in os.listdir(PROCESSED_DIR) if f.endswith(('.jpg', '.png', '.jpeg'))]
for filename in files:
file_path = os.path.join(PROCESSED_DIR, filename)
archive_code = os.path.splitext(filename)[0]
执行OCR识别
result = ocr.ocr(file_path, cls=True)
提取文本
full_text = ""
if result[0]:
for line in result[0]:
text_content = line[1][0]
full_text += text_content + "\n"
保存完整文本到txt文件
txt_filename = archive_code + ".txt"
txt_path = os.path.join(OCR_RESULT_DIR, txt_filename)
with open(txt_path, 'w', encoding='utf-8') as tf:
tf.write(full_text)
摘要取前50个字符,避免Excel单元格过长
summary = full_text[:50].replace('\n', ' ') + "..." if len(full_text) > 50 else full_text
写入Excel
ws.append([archive_code, filename, summary, txt_path])
print(f"OCR完成: {filename}")
wb.save(OUTPUT_EXCEL)
print(f"索引表已生成: {OUTPUT_EXCEL}")
if __name__ == "__main__":
第一步:重命名
rename_files()
第二步:OCR与索引
perform_ocr_and_generate_index()
print("所有任务执行完毕。")

五、实操步骤详解

代码编写完成后,请按照以下步骤执行操作,确保每一步都准确无误。

1. 放置待处理文件

将所有需要整理的保山档案扫描件(图片格式)放入raw_files文件夹中。确保文件名与config/mapping.csv中定义的名称一一对应。

保山档案整理数字化实操:Python批量重命名与OCR归档指南

2. 运行脚本

在项目根目录下打开命令行,输入以下命令启动程序:

python main.py

3. 观察执行日志

终端会打印出详细的执行日志。首先会显示“开始执行档案重命名...”,每处理一个文件都会输出一行日志。如果遇到“警告: 原始文件不存在”,请检查raw_files文件夹内是否有该文件,或者CSV文件中是否拼写错误。

4. 检查输出结果

程序运行结束后,检查processed_files文件夹,里面的文件名应该已经变成了规范的档号(如BS-2023-DW-001.jpg)。接着检查ocr_results文件夹,里面应该生成了对应的TXT文本文件。最后打开output/archive_index.xlsx,查看档号、文件名和识别摘要是否正确对应。

六、常见报错处理方案

在实操过程中,可能会遇到以下技术问题,请参照方案解决。

1. ModuleNotFoundError: No module named 'paddleocr'

这表示依赖库未安装成功。请检查pip源是否配置正确,尝试重新执行pip install paddleocr。如果下载速度慢,可使用清华源:

pip install paddleocr -i https://pypi.tuna.tsinghua.edu.cn/simple

2. OCR识别结果为空

如果图片中文字过小、模糊或倾斜度过大,PaddleOCR可能无法识别。建议先用图片处理工具将图片DPI调整至300以上,并进行去噪处理。如果是手写体档案,需要在初始化代码中将lang="ch"修改为lang="ch"(当前版本已支持部分手写体,但效果不如印刷体)。

3. CSV读取乱码

如果在Excel中编辑CSV后出现乱码,请务必使用“另存为”功能,并选择CSV UTF-8 (逗号分隔)格式。代码中使用了encoding='utf-8-sig'专门用于处理Excel生成的BOM头问题。

4. 权限错误 PermissionError

这通常发生在目标文件被占用时。请确保所有图片文件都没有在图片查看器中打开,并关闭archive_index.xlsx文件后再重新运行脚本。

证券数字档案馆系统:股民再也不用跑营业部找证明了
证券数字档案馆系统:股民再也不用跑营业部找证明了
上周我同事办房贷,银行要近2年的证券交易流水,他翻遍了家里的抽屉,原来的纸质流水早就丢了,给券商打客服电话,说要跑营业部打,来回打车加排队,花了3小时才搞定,差点耽误房贷审批。其实他只要打开开户券商的...
2026年09月09日 04:50:31
微信咨询
电话联系
QQ客服
微信咨询一对一服务
服务热线: 028-8744 4417
QQ客服: 2305721818