零基础黄冈档案整理:Python自动化清洗与OCR识别全流程
一、环境搭建与核心工具配置
在进行黄冈档案整理之前,必须先搭建一个稳定且支持中文的OCR(光学字符识别)环境。我们将使用Python作为核心语言,配合Tesseract-OCR引擎。这是目前开源界识别率最高且完全免费的方案。
1. 安装Python环境
请直接前往Python官网下载Windows x86-64 executable installer版本。
下载地址:https://www.python.org/downloads/release/python-3110/
安装时,务必勾选底部的"Add Python to PATH"选项,这一步不做会导致后续命令行无法识别Python指令。
2. 安装Tesseract-OCR引擎
Python只是胶水语言,真正的识别工作由Tesseract完成。对于Windows用户,必须安装对应的二进制包。
下载地址:https://github.com/UB-Mannheim/tesseract/wiki
点击"tesseract-ocr-w64-setup-5.3.0.20221214.exe"进行下载安装。安装路径建议保持默认,即C:\Program Files\Tesseract-OCR,因为后续代码中需要直接调用该路径下的exe文件。
3. 配置中文语言包
默认安装仅包含英文包。黄冈档案包含大量中文,必须手动下载中文语言包。
操作步骤:
- 下载chi_sim.traineddata(简体中文)文件。
- 下载地址:https://github.com/tesseract-ocr/tessdata/raw/main/chi_sim.traineddata
- 将下载的文件复制到Tesseract安装目录下的tessdata文件夹中(完整路径通常为:C:\Program Files\Tesseract-OCR\tessdata)。
4. 安装Python依赖库
打开Windows命令提示符(Win+R输入cmd),依次执行以下三条命令,不要复制提示符前的字符:
pip install pytesseract
pip install pillow
pip install pandas openpyxl
二、图像预处理:提升识别准确率的核心
直接对扫描件进行识别,准确率通常只有60%左右。通过图像预处理(灰度化、二值化、去噪),可以将准确率提升至90%以上。这一步对于处理老旧、泛黄的纸质档案至关重要。
请在你的项目目录下新建一个文件名为preprocess.py,输入以下代码:
from PIL import Image, ImageEnhance
import os
def process_image(input_path, output_path):
"""
对图像进行灰度化、二值化和对比度增强处理
"""
try:
1. 打开图片并转换为灰度图
img = Image.open(input_path)
img = img.convert('L') 'L'表示灰度模式
2. 二值化处理:设置阈值,将图片转为黑白
阈值140可根据实际扫描件亮度调整,越亮阈值越低
threshold = 140
table = []
for i in range(256):
if i < threshold:
table.append(0)
else:
table.append(1)
img = img.point(table, '1')
3. 重新转换回L模式进行保存,便于OCR读取
img = img.convert('L')
4. 增强对比度
enhancer = ImageEnhance.Contrast(img)
img = enhancer.enhance(2.0)
5. 保存处理后的图片
img.save(output_path)
return True
except Exception as e:
print(f"处理图片 {input_path} 失败: {e}")
return False
三、OCR识别与数据提取
这一步将处理后的图片转化为文本数据。我们需要在代码中显式指定Tesseract的安装路径和中文语言包。

在同级目录下新建ocr_engine.py,代码如下:
import pytesseract
from PIL import Image
如果你的Tesseract没有安装在默认路径,请修改下方引号内的路径
pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe'
def extract_text_from_image(image_path):
"""
从图片中提取中文文本
"""
try:
打开预处理后的图片
text = pytesseract.image_to_string(
Image.open(image_path),
lang='chi_sim', 指定简体中文语言包
config='--psm 6' psm 6 表示假设文本为统一的文本块
)
return text
except Exception as e:
print(f"OCR识别 {image_path} 出错: {e}")
return ""
四、数据清洗与结构化落地
OCR提取出的文本通常包含大量换行符和空格。我们需要将其清洗为可用的结构化数据,并导出为Excel表格,方便后续归档。
在同级目录下新建主程序main.py,整合所有逻辑:
import os
import pandas as pd
import re
from preprocess import process_image
from ocr_engine import extract_text_from_image
配置文件夹路径
SOURCE_DIR = './raw_archives' 原始图片存放文件夹
PROCESSED_DIR = './processed_images' 预处理后图片存放文件夹
OUTPUT_FILE = '黄冈档案整理结果.xlsx'
def clean_text(raw_text):
"""
清洗文本:去除多余空格和特殊字符
"""
if not raw_text:
return ""
去除所有空白字符
text = re.sub(r'\s+', '', raw_text)
return text
def main():
1. 初始化文件夹
if not os.path.exists(PROCESSED_DIR):
os.makedirs(PROCESSED_DIR)
results = []
2. 遍历原始档案文件夹
files = [f for f in os.listdir(SOURCE_DIR) if f.lower().endswith(('.png', '.jpg', '.jpeg'))]
print(f"开始处理,共发现 {len(files)} 个档案文件...")
for filename in files:
input_path = os.path.join(SOURCE_DIR, filename)
output_path = os.path.join(PROCESSED_DIR, f"processed_{filename}")
步骤A:图像预处理
success = process_image(input_path, output_path)
if not success:
continue
步骤B:OCR识别
raw_text = extract_text_from_image(output_path)
步骤C:数据清洗
clean_content = clean_text(raw_text)
步骤D:整理数据(假设我们需要文件名和识别内容)
这里可以根据实际黄冈档案的格式,增加正则提取特定字段(如年份、编号)
results.append({
'文件名': filename,
'识别内容': clean_content,
'状态': '成功' if clean_content else '识别为空'
})
print(f"已处理: {filename}")
3. 导出Excel
if results:
df = pd.DataFrame(results)
df.to_excel(OUTPUT_FILE, index=False, engine='openpyxl')
print(f"\n所有档案整理完成!结果已保存至: {OUTPUT_FILE}")
else:
print("\n未发现任何可处理的图片文件。")
if __name__ == "__main__":
main()
五、实操执行步骤
代码编写完毕后,请严格按照以下步骤执行,确保零门槛落地:
步骤1:准备数据
在代码所在的根目录下,新建一个名为raw_archives的文件夹。将所有待整理的黄冈档案扫描件(JPG或PNG格式)复制粘贴到该文件夹中。
步骤2:运行脚本
在命令行中进入项目目录,执行:
python main.py
步骤3:查看结果
程序运行完毕后,目录下会生成黄冈档案整理结果.xlsx文件。打开该文件,你将看到每一张图片的文件名对应的识别后的纯文本内容。同时,processed_images文件夹中保存了经过黑白二值化处理的图片,你可以人工核对识别效果。
六、常见报错处理
在实操过程中,如果遇到以下问题,请对应排查:
- 报错:FileNotFoundError: [WinError 2] The system cannot find the file specified
原因:Tesseract路径配置错误。请检查ocr_engine.py中的
tesseract_cmd路径是否真实指向你电脑上的tesseract.exe位置。 - 报错:TesseractNotFoundError: tesseract is not installed or it's not in your PATH
原因:环境变量未生效。虽然代码中指定了路径,但有时系统环境变量也需要配置。请将
C:\Program Files\Tesseract-OCR添加到系统Path环境变量中,并重启IDE或命令行。 - 识别结果全是乱码或为空
原因:语言包缺失。请确认
chi_sim.traineddata文件已正确放入tessdata文件夹。如果是手写体档案,标准版Tesseract识别率极低,建议改用专门的 handwriting 模型或商业OCR API。