档案数字化实战教程:零基础搭建与OCR识别

一、环境搭建与工具准备

在进行档案数字化处理之前,必须先配置好基础运行环境。本文以Windows系统为例,使用Python作为开发语言,Tesseract-OCR作为识别引擎。

1. 安装Python环境

访问Python官网下载安装包。直接运行安装程序,安装界面中务必勾选"Add Python to PATH"选项,这一步至关重要,否则后续命令行无法直接调用Python。安装完成后,打开CMD命令行窗口,输入以下命令验证安装是否成功:

python --version

2. 安装Tesseract-OCR引擎

Tesseract是OCR识别的核心引擎。前往UB Mannheim的Tesseract镜像站下载Windows安装包(推荐下载tesseract-ocr-w64-setup-5.x.x版本)。安装过程中,在"Choose Components"界面,务必展开"Additional language data",勾选"Chinese (Simplified)""Chinese (Traditional)",否则无法识别中文档案。

安装完成后,需要配置系统环境变量。右键"此电脑"->"属性"->"高级系统设置"->"环境变量",在"系统变量"中找到Path,点击编辑,新增Tesseract的安装路径(默认为C:\Program Files\Tesseract-OCR)。同时,新建一个系统变量,变量名为TESSDATA_PREFIX,变量值为Tesseract安装路径(例如C:\Program Files\Tesseract-OCR)。

3. 安装Python依赖库

在CMD中执行以下命令,安装图像处理库及OCR接口库:

pip install pytesseract opencv-python pillow numpy

二、图像预处理核心逻辑

扫描件或拍照的档案往往存在噪点、倾斜或光照不均的问题,直接识别准确率极低。必须通过OpenCV进行预处理。

1. 灰度化与二值化

将彩色图像转换为灰度图,再通过Otsu算法自动寻找阈值进行二值化处理,将图像转为纯黑白,能有效去除背景干扰。

2. 去噪处理

使用中值滤波去除椒盐噪点,保留边缘信息的同时平滑图像。

3. 旋转校正

档案数字化实战教程:零基础搭建与OCR识别

档案扫描时容易发生微小倾斜,严重影响OCR排版识别。我们需要通过检测文本行角度进行旋转校正。

以下是预处理及旋转校正的完整代码函数:

```python
import cv2
import numpy as np
import pytesseract
from PIL import Image
import os

设置Tesseract路径,如果未配置环境变量则必须在此指定
pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe'

def preprocess_image(image_path):
读取图像
img = cv2.imread(image_path)
if img is None:
print(f"无法读取图像: {image_path}")
return None

1. 灰度化
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

2. 二值化 (Otsu自动阈值)
_, binary = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)

3. 去噪 (中值滤波)
denoised = cv2.medianBlur(binary, 3)

4. 旋转校正
def correct_skew(image):
coords = np.column_stack(np.where(image > 0))
if coords.size == 0:
return image
angle = cv2.minAreaRect(coords)[-1]
if angle < -45:
angle = -(90 + angle)
else:
angle = -angle
(h, w) = image.shape[:2]
center = (w // 2, h // 2)
M = cv2.getRotationMatrix2D(center, angle, 1.0)
rotated = cv2.warpAffine(image, M, (w, h), flags=cv2.INTER_CUBIC, borderMode=cv2.BORDER_REPLICATE)
return rotated

corrected = correct_skew(denoised)
return corrected
```

三、OCR识别与结构化输出

预处理后的图像即可送入Tesseract引擎进行识别。为了提高识别准确率,需要配置白名单、页码分割模式(PSM)等参数。

1. 识别参数配置

--oem 3: 使用LSTM神经网络引擎。
--psm 6: 假设图像为统一的文本块。
-l chi_sim+eng: 同时加载简体中文和英文语言包。

2. 批量处理逻辑

实际场景中通常是文件夹级别的批量处理。我们需要遍历文件夹,对每个图片执行预处理、识别,并将结果保存为同名的TXT文件。

以下是完整的批量处理主程序代码:

```python
def process_folder(input_folder, output_folder):
if not os.path.exists(output_folder):
os.makedirs(output_folder)

支持的图片格式
valid_extensions = ['.jpg', '.jpeg', '.png', '.bmp', '.tiff']

for filename in os.listdir(input_folder):
file_ext = os.path.splitext(filename)[1].lower()
if file_ext not in valid_extensions:
continue

input_path = os.path.join(input_folder, filename)
print(f"正在处理: {filename}")

预处理
processed_img = preprocess_image(input_path)
if processed_img is None:
continue

保存预处理后的图片(可选,用于调试)
debug_path = os.path.join(output_folder, "processed_" + filename)
cv2.imwrite(debug_path, processed_img)

配置识别参数
custom_config = r'--oem 3 --psm 6 -l chi_sim+eng'

try:
执行OCR识别
text = pytesseract.image_to_string(processed_img, config=custom_config)

去除首尾空白字符
text = text.strip()

构建输出文件名
output_filename = os.path.splitext(filename)[0] + '.txt'
output_path = os.path.join(output_folder, output_filename)

写入文件
with open(output_path, 'w', encoding='utf-8') as f:
f.write(text)

print(f"识别完成,结果已保存至: {output_filename}")

except Exception as e:
print(f"识别 {filename} 时发生错误: {e}")

if __name__ == "__main__":
定义输入和输出目录,请根据实际情况修改
input_directory = r"./archives_input"
output_directory = r"./archives_output"

print("=== 档案数字化处理系统启动 ===")
process_folder(input_directory, output_directory)
print("=== 所有任务处理完毕 ===")
```

四、实操落地步骤指南

代码准备完毕后,按照以下步骤即可直接运行:

  1. 创建目录结构:在电脑D盘或任意位置新建一个文件夹,命名为DigiArchProject。进入该文件夹,新建两个子文件夹,分别命名为archives_inputarchives_output
  2. 准备测试数据:找几张包含中文的档案扫描件(JPG或PNG格式),放入archives_input文件夹中。
  3. 保存代码:新建一个文本文档,将上述两段代码合并复制进去,保存为ocr_runner.py,放在DigiArchProject根目录下。注意修改代码底部的input_directoryoutput_directory路径,确保指向你刚才创建的文件夹(或者保持相对路径不变,直接在根目录运行)。
  4. 运行程序:打开CMD窗口,使用cd命令切换到项目目录,例如:cd /d D:\DigiArchProject。然后执行运行命令:python ocr_runner.py
  5. 查看结果:程序运行完毕后,打开archives_output文件夹,你会看到生成了对应的TXT文件。打开文件即可查看提取出的文字内容。

五、常见报错与解决方案

在实操过程中,可能会遇到以下两个主要问题,请对照解决:

  • 报错:FileNotFoundError: [WinError 2] "tesseract" not found
    原因:系统未找到Tesseract可执行文件。
    解决:检查环境变量Path是否正确添加了Tesseract路径;或者在代码中取消注释pytesseract.pytesseract.tesseract_cmd这一行,并填入你电脑上tesseract.exe的绝对路径。
  • 识别结果为乱码或空白
    原因:未下载中文语言包或图片质量过低。
    解决:重新运行Tesseract安装包,确保勾选了Chinese语言数据;或者检查输入图片的分辨率,建议扫描件DPI不低于300。
AI咨询
热线电话

028-85154420

15388110056

全国售前咨询电话

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

微信扫码关注安答联动

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

安答联动档案管理系统