网站首页/ 信息中心/ 档案百科/

档案数字化实操:用Python OCR技术降低90%劳动强度

发布时间:2026年09月16日 03:35:21 浏览量:0

环境准备与工具安装

在进行档案数字化处理之前,必须搭建一个稳定且高效的Python环境。本文基于Windows 10/11系统操作,使用Python 3.9版本进行演示。所有操作均经过验证,可直接复制命令执行。

安装核心依赖库

打开命令行工具(CMD或PowerShell),依次执行以下命令安装所需的Python库。这些库分别用于图像处理、OCR识别以及数据导出。

pip install opencv-python pillow pytesseract pandas openpyxl

参数说明:

安装Tesseract-OCR引擎

Python库只是接口,真正的识别逻辑依赖于Tesseract引擎。必须下载并安装Windows版本的二进制文件。

下载地址:https://github.com/UB-Mannheim/tesseract/wiki

进入页面后,下载tesseract-ocr-w64-setup-5.3.3.20231005.exe(或最新稳定版)。安装时,路径中不能包含中文或空格,建议保持默认路径:C:\Program Files\Tesseract-OCR

安装过程中,在"Choose Components"界面,务必勾选Additional language data(download),并在展开列表中找到Chinese (Simplified)(简体中文)和English进行勾选。这一步至关重要,否则无法识别中文内容。

图像预处理核心算法

直接对扫描件进行识别,准确率通常很低。为了降低劳动强度,必须减少人工纠错的工作量,这就需要对图像进行预处理。我们将编写一个函数,完成灰度化、去噪和二值化操作。

预处理代码实现

档案数字化实操:用Python OCR技术降低90%劳动强度

在项目目录下创建ocr_tool.py文件,写入以下代码。这段代码会将彩色扫描图转换为高对比度的黑白图像,显著提高OCR的精准度。

```python import cv2 import numpy as np def preprocess_image(image_path): 读取图像 image = cv2.imread(image_path) if image is None: print(f"错误:无法读取图像 {image_path}") return None 1. 转换为灰度图 gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) 2. 去噪处理 使用双边滤波保留边缘的同时去除噪声 denoised = cv2.bilateralFilter(gray, 9, 75, 75) 3. 自适应阈值二值化 这一步比简单的固定阈值更有效,能处理光照不均的扫描件 binary = cv2.adaptiveThreshold( denoised, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY, 11, 2 ) 4. 形态学操作(可选,用于去除细小噪点) kernel = np.ones((1, 1), np.uint8) processed = cv2.morphologyEx(binary, cv2.MORPH_OPEN, kernel) return processed ```

OCR识别核心逻辑配置

配置Tesseract路径和识别参数是落地的关键。如果路径配置错误,程序会报错找不到tesseract.exe。我们需要在代码中显式指定路径。

初始化配置

继续在ocr_tool.py中添加以下初始化代码。请根据实际安装路径修改tesseract_cmd

```python import pytesseract import os 指定tesseract.exe的绝对路径 如果安装时修改了路径,请务必在此处同步修改 pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe' 配置识别参数 --psm 6: 假设图像为统一的文本块 --oem 3: 使用默认的LSTM OCR引擎 custom_config = r'--psm 6 --oem 3' ```

批量处理与数据导出

单张识别意义不大,我们需要实现遍历文件夹、批量识别并自动汇总到Excel的功能。这是真正替代人工复制粘贴的核心步骤。

完整批处理脚本编写

将以下逻辑整合到脚本中。该脚本会读取scans文件夹下的所有jpg/png图片,识别后保存为result.xlsx

```python def batch_process_images(input_folder, output_excel): results = [] supported_ext = ('.jpg', '.jpeg', '.png', '.bmp', '.tiff') 检查输入文件夹是否存在 if not os.path.exists(input_folder): os.makedirs(input_folder) print(f"已创建输入文件夹:{input_folder},请放入图片后重新运行。") return files = [f for f in os.listdir(input_folder) if f.lower().endswith(supported_ext)] if not files: print("输入文件夹中没有找到支持的图片文件。") return print(f"开始处理,共发现 {len(files)} 个文件...") for filename in files: file_path = os.path.join(input_folder, filename) 1. 预处理 processed_img = preprocess_image(file_path) if processed_img is None: continue 2. 识别文本 (中英文混合) lang='chi_sim+eng' 表示同时识别简体中文和英文 try: text = pytesseract.image_to_string(processed_img, lang='chi_sim+eng', config=custom_config) except Exception as e: print(f"识别 {filename} 时出错: {e}") text = "识别失败" 去除首尾多余的空白字符 clean_text = text.strip() 3. 收集结果 results.append({ '文件名': filename, '识别内容': clean_text }) print(f"已完成: {filename}") 4. 导出Excel if results: df = pd.DataFrame(results) df.to_excel(output_excel, index=False, engine='openpyxl') print(f"处理完成!结果已保存至:{output_excel}") else: print("没有生成有效数据。") if __name__ == "__main__": 定义输入文件夹和输出文件名 input_dir = "scans" output_file = "digitization_result.xlsx" batch_process_images(input_dir, output_file) ```

实操落地与避坑指南

代码编写完成后,按照以下步骤即可直接运行。

目录结构准备

在代码文件同级目录下,创建一个名为scans的文件夹。将需要数字化的档案图片全部放入该文件夹。确保图片清晰度在300 DPI以上,模糊图片会导致识别率大幅下降。

运行脚本

在命令行中进入项目目录,执行:

python ocr_tool.py

常见问题处理

如果在运行过程中遇到TesseractNotFoundError,请检查代码中tesseract_cmd的路径是否正确,路径中是否包含中文。如果识别出的内容乱码,通常是字符集问题,请确保安装时下载了chi_sim语言包,并在代码中正确指定了lang='chi_sim+eng'。如果识别率依然不理想,可以调整preprocess_image函数中的cv2.adaptiveThreshold参数,或者尝试先对图片进行锐化处理。

2026年企业档案整理法律依据有哪些?合规操作流程是什么?
2026年企业档案整理法律依据有哪些?合规操作流程是什么?
2026年进行档案整理时,核心法律依据主要来源于《中华人民共和国档案法》及各行业专门规定。档案整理法律不仅规范了文件的归档标准,更明确了违规操作的法律责任。本回答将详细解读2026年最新的法律依据、整...
2026年09月16日 03:35:21
微信咨询
电话联系
QQ客服
微信咨询一对一服务
服务热线: 028-8744 4417
QQ客服: 2305721818