天然气部门档案整理:从纸质到数字化的全流程实操

一、环境准备与工具安装

在开始天然气部门档案整理之前,必须搭建一个稳定、高效的自动化处理环境。本方案基于Python开发,利用OCR技术将扫描件转化为可检索的文本数据。请严格按照以下步骤操作,确保环境零报错。

1. 安装Python环境

前往Python官网下载 3.93.10 版本的Windows安装包(64位)。下载地址:https://www.python.org/downloads/windows/。安装时,务必勾选底部的 "Add Python to PATH" 选项,这直接决定了后续命令是否能在终端直接运行。安装完成后,打开CMD(命令提示符),输入 python --version,若显示版本号则说明安装成功。

2. 安装Tesseract-OCR引擎

这是识别中文档案的核心组件。不要使用系统默认的包管理器,请直接下载Windows安装包。下载地址:https://github.com/UB-Mannheim/tesseract/wiki。进入页面后,找到 tesseract-ocr-w64-setup-5.x.x.exe(5.3.0或更高版本)进行下载。

安装过程中,在"Choose Components"界面,务必展开 "Additional language data",勾选 Chinese (Simplified)English,否则无法识别中文档案。安装路径建议保持默认(C:\Program Files\Tesseract-OCR),后续代码中会直接调用此路径。

3. 安装Python依赖库

在CMD中依次执行以下三条命令,安装图像处理、OCR接口及数据操作库:

  • pip install pytesseract pillow
  • pip install pandas openpyxl
  • pip install shutil(通常内置,若报错则执行)

二、项目目录结构初始化

为了实现自动化归档,需要在本地建立一个规范的文件目录。请在D盘根目录下创建一个名为 Gas_Archive_Project 的文件夹,并在其内部建立以下子目录结构:

  • D:\Gas_Archive_Project\raw_scans:存放待处理的原始扫描件(支持JPG、PNG、PDF格式)。
  • D:\Gas_Archive_Project\processed_files:存放处理后的重命名文件。
  • D:\Gas_Archive_Project\logs:存放处理过程的日志文件。
  • D:\Gas_Archive_Project\archive_system.py:我们的核心脚本文件(稍后创建)。

将所有待整理的天然气档案(如用户合同、管道铺设图纸、安检记录表)全部复制到 raw_scans 文件夹中。请确保文件名不要包含特殊字符,以免读取报错。

三、OCR识别核心模块开发

天然气部门档案整理:从纸质到数字化的全流程实操

打开VS Code或任意文本编辑器,新建 archive_system.py 文件。我们将编写代码,利用Tesseract对图片进行文字提取。以下是核心代码段,请直接复制:

```python import pytesseract import os from PIL import Image import pandas as pd import re import shutil from datetime import datetime 配置Tesseract路径,请根据实际安装路径修改,通常为以下默认值 pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe' def extract_text_from_image(image_path): """ 识别图片中的文字 支持中文和英文混合识别 """ try: 打开图片文件 image = Image.open(image_path) 使用lang='chi_sim+eng'指定中英文混合识别 text = pytesseract.image_to_string(image, lang='chi_sim+eng') return text except Exception as e: print(f"识别文件 {image_path} 失败: {e}") return None ```

上述代码中,lang='chi_sim+eng' 参数至关重要,它确保了引擎能同时处理天然气档案中的中文说明和英文/数字编号。如果识别率低,建议在调用前对图片进行灰度处理,但为了保证实操的简洁性,本指南直接使用原图处理。

四、档案信息提取与清洗

天然气档案通常包含特定的关键字段,如“用户合同号”、“安检日期”、“管线编号”。我们需要编写正则表达式,从OCR提取的杂乱文本中精准抓取这些信息。继续在脚本中添加以下函数:

```python def parse_archive_info(text): """ 从识别的文本中解析关键信息 根据实际档案格式调整正则表达式 """ info = { "contract_no": "未知", "check_date": "未知", "pipeline_id": "未知", "file_type": "其他" } if not text: return info 1. 提取合同号 (假设格式为 GAS-YYYY-NNNNN) contract_match = re.search(r'(GAS-\d{4}-\d{5,})', text) if contract_match: info["contract_no"] = contract_match.group(1) 2. 提取日期 (格式 YYYY-MM-DD) date_match = re.search(r'(\d{4}-\d{2}-\d{2})', text) if date_match: info["check_date"] = date_match.group(1) 3. 提取管线编号 (假设包含字母P和数字) pipeline_match = re.search(r'(P[-_]?\d{4,})', text, re.IGNORECASE) if pipeline_match: info["pipeline_id"] = pipeline_match.group(1).upper() 4. 简单判断档案类型 if "安检" in text or "inspection" in text.lower(): info["file_type"] = "安检记录" elif "合同" in text or "contract" in text.lower(): info["file_type"] = "用户合同" elif "图纸" in text or "drawing" in text.lower(): info["file_type"] = "工程图纸" return info ```

此段代码利用正则表达式清洗数据。请根据您手中实际档案的编号规则修改 contract_match 中的正则表达式。例如,如果贵单位合同号是“HT2023001”,请将正则改为 r'(HT\d{7})'

五、自动化归档脚本整合

接下来,我们将上述模块整合,实现批量处理:读取文件 -> 识别 -> 提取信息 -> 重命名归档 -> 生成索引表。将以下主函数代码追加到脚本末尾:

```python def main(): raw_dir = r'D:\Gas_Archive_Project\raw_scans' processed_dir = r'D:\Gas_Archive_Project\processed_files' log_dir = r'D:\Gas_Archive_Project\logs' 确保输出目录存在 os.makedirs(processed_dir, exist_ok=True) os.makedirs(log_dir, exist_ok=True) 支持的图片格式 valid_extensions = ('.jpg', '.jpeg', '.png', '.bmp') files = [f for f in os.listdir(raw_dir) if f.lower().endswith(valid_extensions)] data_records = [] log_content = [] print(f"开始处理,共发现 {len(files)} 个文件。") for filename in files: file_path = os.path.join(raw_dir, filename) print(f"正在处理: {filename} ...") 1. OCR识别 text = extract_text_from_image(file_path) 2. 信息解析 info = parse_archive_info(text) 3. 构建新文件名 规则: 类型_合同号_日期.后缀 file_ext = os.path.splitext(filename)[1] new_filename = f"{info['file_type']}_{info['contract_no']}_{info['check_date']}{file_ext}" new_file_path = os.path.join(processed_dir, new_filename) 4. 移动并重命名文件 try: shutil.copy(file_path, new_file_path) status = "成功" except Exception as e: status = f"失败: {e}" 5. 记录数据 record = { "原文件名": filename, "新文件名": new_filename, "合同号": info['contract_no'], "日期": info['check_date'], "管线ID": info['pipeline_id'], "档案类型": info['file_type'], "处理状态": status } data_records.append(record) log_entry = f"{datetime.now()} | {filename} -> {new_filename} | {status}\n" log_content.append(log_entry) 6. 生成Excel索引表 df = pd.DataFrame(data_records) excel_path = os.path.join(log_dir, f"archive_index_{datetime.now().strftime('%Y%m%d%H%M%S')}.xlsx") df.to_excel(excel_path, index=False) 7. 保存日志 with open(os.path.join(log_dir, "process_log.txt"), "a", encoding="utf-8") as f: f.writelines(log_content) print(f"处理完成!索引表已生成: {excel_path}") if __name__ == "__main__": main() ```

六、执行与结果验证

代码编写完毕后,保存文件。回到CMD窗口,将目录切换至项目文件夹:

cd D:\Gas_Archive_Project

执行脚本命令:

python archive_system.py

预期结果与验证步骤:

  1. 控制台输出:屏幕会滚动显示“正在处理: xxx.jpg”,并显示处理进度。
  2. 文件归档:打开 processed_files 文件夹,您将看到所有文件已被重命名。例如,原来的 scan001.jpg 可能变成了 用户合同_GAS-2023-00088_2023-10-12.jpg
  3. 数据索引:打开 logs 文件夹,找到最新的 archive_index_xxxxx.xlsx 文件。使用Excel打开,您会看到一个清晰的表格,列出了所有档案的合同号、日期、类型等信息。

此时,您可以直接在Excel中通过“筛选”功能,按“合同号”或“日期”查找所有相关档案,文件名已直接对应,实现了从纸质杂乱文档到数字化结构化数据的转变。若遇到识别错误,请检查原始图片清晰度,或调整 parse_archive_info 函数中的正则表达式以匹配实际文本特征。

AI咨询
热线电话

028-85154420

15388110056

全国售前咨询电话

扫码咨询
安答联动微信公众号二维码

微信扫码关注安答联动

申请试用
热线电话
申请试用

安答联动档案管理系统