昌江黎族自治县档案整理数字化实操全流程指南
一、开发环境与依赖库安装
在进行昌江黎族自治县档案整理之前,首先需要搭建一个基于Python的自动化处理环境。Python能够通过脚本实现批量OCR识别、文件重命名和索引生成,是处理大量档案文件的最佳工具。
1. 安装Python解释器
请前往Python官方镜像站下载Windows x64可执行安装包。下载地址为:https://www.python.org/ftp/python/3.10.11/python-3.10.11-amd64.exe。下载后双击运行,务必勾选界面底部的"Add Python to PATH"选项,然后点击"Install Now"完成安装。
2. 安装核心依赖库
打开Windows命令提示符(CMD),依次输入以下命令并回车,安装处理档案所需的OCR库、图像处理库和表格处理库。请确保网络连接正常,以便从国内镜像源快速下载。
```bash
pip install paddleocr paddlepandas opencv-python openpyxl -i https://pypi.tuna.tsinghua.edu.cn/simple
```
安装完成后,输入python进入交互模式,输入import paddleocr,如果没有报错,说明环境配置成功。
二、构建标准化目录结构
为了确保昌江黎族自治县各类档案(文书、科技、会计等)在整理后条理清晰,必须先在本地硬盘建立一个标准化的目录树。不要随意将文件散落在桌面或下载文件夹中。
请在D盘(或其他数据盘)根目录下创建名为"Changjiang_Archives_2023"的主文件夹。进入该文件夹,按照以下结构创建子目录:
- 01_待处理原始扫描件:存放从扫描仪导出的、尚未命名的PDF或JPG文件。
- 02_文书档案_永久:存放需永久保管的文书类档案。
- 03_文书档案_30年:存放保管期限为30年的文书类档案。
- 04_科技档案_基建:存放昌江地区基建项目相关图纸及文档。
- 05_成果输出:存放最终生成的Excel检索目录表。
这种分类方式符合国家档案局《归档文件整理规则》的标准,能够直接对接后续的数字化移交系统。
三、编写OCR文本提取脚本
昌江黎族自治县的档案多为纸质扫描件,计算机无法直接识别其中的文字。我们需要编写一段Python脚本,调用PaddleOCR引擎自动读取图片或PDF中的文字内容,这是实现档案智能分类的关键步骤。
在电脑上新建一个文本文档,将后缀名改为.py(例如ocr_tool.py),复制以下完整代码并保存:
```python
from paddleocr import PaddleOCR
import os
import cv2
初始化OCR模型,使用方向分类器以适应扫描件可能存在的倾斜
ocr = PaddleOCR(use_angle_cls=True, lang="ch", show_log=False)
def extract_text_from_image(image_path):
读取图片
img = PaddleOCR.read_image(image_path)
执行识别
result = ocr.ocr(img, cls=True)
text_list = []
if result[0]:
for line in result[0]:
text_list.append(line[1][0])
将识别结果拼接成完整字符串
full_text = "\n".join(text_list)
return full_text
if __name__ == "__main__":
指定待处理文件夹路径,请根据实际路径修改
source_dir = r"D:\Changjiang_Archives_2023\01_待处理原始扫描件"
for filename in os.listdir(source_dir):
if filename.endswith((".jpg", ".png", ".jpeg")):
file_path = os.path.join(source_dir, filename)
print(f"正在处理: {filename}")
content = extract_text_from_image(file_path)
将识别出的文本保存为同名txt文件,方便后续检查
with open(os.path.join(source_dir, filename + ".txt"), "w", encoding="utf-8") as f:
f.write(content)
print(f"完成: {filename}")
```
运行该脚本后,系统会自动在扫描件文件夹下生成对应的TXT文本文件,里面包含了档案的完整文字内容。请打开几个TXT文件检查,确认是否准确提取了“昌江黎族自治县”、“发文号”、“日期”等关键字段。
四、编写智能重命名与归档脚本
档案整理的核心是将杂乱的文件名转化为标准的“全宗号-年度-保管期限-机构-问题-件号”格式。基于上一步提取的文本信息,我们可以编写脚本实现自动重命名和移动文件。
新建一个rename_tool.py文件,复制以下代码。此脚本假设档案中包含“2023”字样作为年份,包含“昌江”作为地域标识,请根据实际文件特征调整正则表达式:
```python
import os
import shutil
import re
def process_archives():
source_dir = r"D:\Changjiang_Archives_2023\01_待处理原始扫描件"
permanent_dir = r"D:\Changjiang_Archives_2023\02_文书档案_永久"
target_30_dir = r"D:\Changjiang_Archives_2023\03_文书档案_30年"
确保目标文件夹存在
os.makedirs(permanent_dir, exist_ok=True)
os.makedirs(target_30_dir, exist_ok=True)
file_counter = 1
for filename in os.listdir(source_dir):
if not filename.endswith(".txt"):
continue
txt_path = os.path.join(source_dir, filename)
获取对应的原始图片文件名
original_img_name = filename.replace(".txt", "")
original_img_path = os.path.join(source_dir, original_img_name)
if not os.path.exists(original_img_path):
continue
读取文本内容进行分析
with open(txt_path, "r", encoding="utf-8") as f:
content = f.read()
简单逻辑:提取年份和判断保管期限(此处仅为示例逻辑)

year_match = re.search(r"20\d{2}", content)
year = year_match.group(0) if year_match else "2023"
判断是否包含“重要”或“长期”字样,否则默认为30年
if "重要" in content or "永久" in content:
target_dir = permanent_dir
retention_code = "Y"
else:
target_dir = target_30_dir
retention_code = "30"
构造新文件名:全宗号(001)-年度-保管期限-件号.后缀
ext = os.path.splitext(original_img_name)[1]
new_filename = f"001-{year}-{retention_code}-{str(file_counter).zfill(4)}{ext}"
移动并重命名文件
dest_path = os.path.join(target_dir, new_filename)
shutil.move(original_img_path, dest_path)
print(f"已归档: {new_filename}")
file_counter += 1
删除临时的txt文件
os.remove(txt_path)
if __name__ == "__main__":
process_archives()
```
执行此脚本后,所有原始扫描件将按照年份和保管期限自动移动到对应的文件夹中,并被赋予了规范的文件名。这一步彻底解决了人工重命名效率低且易出错的问题。
五、自动生成Excel移交清单
档案整理的最后一步是生成纸质和电子版的移交目录。我们需要遍历整理好的文件夹,将文件名解析后写入Excel表格。
新建generate_excel.py,输入以下代码:
```python
import os
import pandas as pd
def create_index():
base_dir = r"D:\Changjiang_Archives_2023"
定义需要扫描的文件夹列表
folders_to_scan = [
r"D:\Changjiang_Archives_2023\02_文书档案_永久",
r"D:\Changjiang_Archives_2023\03_文书档案_30年"
]
data = []
for folder in folders_to_scan:
retention = "永久" if "永久" in folder else "30年"
for filename in os.listdir(folder):
if filename.endswith((".jpg", ".png", ".pdf")):
解析文件名:001-2023-Y-0001.jpg
parts = filename.split("-")
if len(parts) >= 4:
file_id = parts[3].split(".")[0]
year = parts[1]
构造行数据
row = {
"件号": file_id,
"责任者": "昌江黎族自治县XX局",
"文号": "",
"题名": filename,
"日期": year + "-01-01",
"页数": "1",
"保管期限": retention
}
data.append(row)
创建DataFrame并保存
df = pd.DataFrame(data)
output_path = os.path.join(base_dir, "05_成果输出", "档案移交目录.xlsx")
os.makedirs(os.path.dirname(output_path), exist_ok=True)
df.to_excel(output_path, index=False)
print(f"移交目录已生成:{output_path}")
if __name__ == "__main__":
create_index()
```
运行脚本后,打开“05_成果输出”文件夹,你会看到一份标准的Excel移交清单。此时,你可以打开Excel,根据扫描件的实际内容手动补充“责任者”、“文号”和“题名”等具体信息,或者利用Excel的VLOOKUP功能结合之前的OCR文本结果进行批量填充。
六、全流程执行与验证
完成上述所有脚本的编写后,请按照以下顺序进行最终操作,确保昌江黎族自治县档案整理工作的准确性。
1. 数据备份
在运行任何自动化脚本前,先将“01_待处理原始扫描件”文件夹复制一份到其他硬盘作为备份,防止脚本逻辑错误导致原始数据丢失。
2. 顺序执行
首先运行ocr_tool.py,检查生成的TXT文件内容是否完整。确认无误后,运行rename_tool.py,观察文件是否被正确移动和重命名。最后运行generate_excel.py生成清单。
3. 质量抽检
随机抽取“02_文书档案_永久”和“03_文书档案_30年”文件夹中的5-10个文件,检查文件名是否符合规范,以及文件内容是否与文件名中的年份、保管期限相符。同时核对Excel清单中的件号是否与实际文件数量一致。
通过以上技术手段,我们摒弃了传统的人工逐份整理方式,利用Python实现了从扫描件到标准化档案库的全自动化流转,极大地提升了昌江黎族自治县档案整理的效率和准确度。