零基础实现唐山档案整理:Python自动化OCR归档实操教程
一、环境搭建与依赖安装
在进行唐山档案整理的数字化操作前,必须先配置好Python运行环境及OCR识别引擎。本指南基于Windows 10/11系统编写,核心逻辑同样适用于Linux和macOS。
1. Python环境配置
首先需要安装Python解释器。请前往Python官网下载最新稳定版(推荐3.9或3.10版本)。安装时,务必勾选界面底部的"Add Python to PATH"选项,这将自动配置环境变量,避免后续命令行无法识别Python指令。
安装完成后,打开命令提示符(CMD),输入以下命令验证安装是否成功:
```bash python --version ```2. 安装必要的Python库
我们需要使用`pytesseract`进行OCR调用,`Pillow`处理图像,`pandas`和`openpyxl`用于将识别结果导出为Excel表格。在CMD中执行以下命令进行批量安装:
```bash pip install pytesseract pillow pandas openpyxl ```3. 安装Tesseract OCR引擎
这是实现文字识别的核心工具。Python库只是接口,真正的识别能力由Tesseract引擎提供。
下载地址:请访问UB Mannheim的Tesseract页面下载Windows安装包。
安装步骤:
- 运行安装程序,一路点击"Next"。
- 在"Choose Components"界面,务必勾选"Additional language data(download)"。
- 展开该项,在列表中找到Chinese (Simplified)和Chinese (Traditional)并勾选,这是识别唐山档案中汉字的关键。
- 安装路径建议保持默认,通常为
C:\Program Files\Tesseract-OCR。 - TangshanArchives/ (根目录)
- raw_images/:存放待整理的档案扫描件(支持JPG、PNG格式)。
- processed_data/:用于存放输出的Excel结果文件。
- archive_sorter.py:我们将要编写的自动化脚本。
- 进入目录:在CMD中使用
cd命令切换到项目目录。cd /d D:\TangshanArchives(假设您在D盘) - 执行脚本:
python archive_sorter.py - 原始文件名:对应图片的名称。
- 归档日期:处理当天的日期。
- 识别全文:图片中提取出的文字内容。
二、项目目录结构搭建
为了保持档案整理的条理性,请在D盘或任意工作目录下创建一个名为TangshanArchives的项目文件夹。并在其中建立以下子目录结构:
请将所有待处理的唐山档案图片文件复制到raw_images文件夹中。
三、核心代码编写:图像预处理与OCR识别

打开代码编辑器(如VS Code或PyCharm),新建文件archive_sorter.py。我们将分模块编写代码,确保每一步都可执行。
1. 导入库与配置路径
代码首部需要引入相关库,并手动指定Tesseract的安装路径。这是Windows环境下最容易报错的环节,必须使用绝对路径。
```python import os import pytesseract from PIL import Image import pandas as pd from datetime import datetime 请根据您的实际安装路径修改,注意路径前的r表示原始字符串,避免转义问题 pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe' 定义文件夹路径 BASE_DIR = os.path.dirname(os.path.abspath(__file__)) INPUT_DIR = os.path.join(BASE_DIR, 'raw_images') OUTPUT_DIR = os.path.join(BASE_DIR, 'processed_data') ```2. 图像预处理函数
档案扫描件往往带有噪点或倾斜,直接识别效果不佳。我们需要编写一个函数,将图片转换为灰度图并进行适当的二值化处理,以提高文字对比度。
```python def preprocess_image(image_path): """ 加载图像并转换为灰度模式,提升OCR识别率 """ try: img = Image.open(image_path) 转换为灰度图 img = img.convert('L') 这里可以扩展二值化处理,例如 threshold = 200 img = img.point(lambda x: 0 if x < 200 else 255, '1') return img except Exception as e: print(f"图片读取失败: {image_path}, 错误: {e}") return None ```3. 核心识别逻辑
编写函数调用OCR引擎。针对唐山档案,主要包含中文,因此指定语言参数为chi_sim(简体中文)。同时开启--psm 6参数,假设图片为统一的文本块,这对于排版整齐的档案效果最好。
四、数据清洗与结构化存储
OCR识别出的原始文本通常包含大量换行符和空格。我们需要将其清洗,并提取出关键信息(如文件名、识别时间、正文内容),最后存入列表以便导出。
```python def clean_text(text): """ 清洗文本,去除多余的空白字符 """ 将连续的空白字符替换为单个空格 import re text = re.sub(r'\s+', ' ', text) return text def process_archives(): """ 主处理函数:遍历文件夹,执行OCR,汇总数据 """ if not os.path.exists(OUTPUT_DIR): os.makedirs(OUTPUT_DIR) data_records = [] files = [f for f in os.listdir(INPUT_DIR) if f.lower().endswith(('.png', '.jpg', '.jpeg'))] print(f"开始处理,共发现 {len(files)} 个档案文件...") for filename in files: file_path = os.path.join(INPUT_DIR, filename) print(f"正在处理: {filename}") 1. 预处理 img = preprocess_image(file_path) 2. 识别 raw_text = extract_text_from_image(img) 3. 清洗 clean_content = clean_text(raw_text) 4. 组装数据 record = { "档案文件名": filename, "识别时间": datetime.now().strftime("%Y-%m-%d %H:%M:%S"), "档案内容摘要": clean_content[:100] + "..." if len(clean_content) > 100 else clean_content, 摘要 "完整识别内容": clean_content } data_records.append(record) return data_records ```五、完整自动化脚本整合
将上述模块整合,并添加Excel导出的最终逻辑。请将以下完整代码覆盖archive_sorter.py中的内容。
六、运行与结果验证
代码保存后,我们直接在命令行中运行脚本。
终端将实时显示处理进度。如果看到"任务完成!结果已保存至..."的提示,说明程序运行成功。
结果校验
打开processed_data文件夹,你会看到一个以时间戳命名的Excel文件。打开该文件,你应该能看到以下列:
此时,唐山档案的数字化初步工作已完成。你可以打开Excel,利用Ctrl+F功能快速检索档案内容,实现从“翻阅纸质堆”到“秒级检索”的转变。如果发现识别率不高,建议回到preprocess_image函数中,调整图片的分辨率或对比度参数。