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

Python实现档案数字化加密软件全流程实操

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

第一步:开发环境搭建与依赖安装

在开始编写代码之前,必须先配置好Python运行环境。本指南基于Python 3.8及以上版本,利用AES-256对称加密算法保障数据安全,结合Tesseract-OCR实现档案内容的数字化提取。

打开终端或命令提示符,执行以下命令安装核心依赖库:

pip install pycryptodome pillow pytesseract

接下来安装OCR识别引擎Tesseract。这是实现档案数字化的关键组件,请根据你的操作系统下载对应的安装包:

注意: Windows用户安装时务必勾选"Add to PATH"选项,或者手动记录安装路径,后续代码中需要显式指定该路径。建议创建一个项目文件夹,并在其中新建两个子目录:input_files(存放待处理的档案图片或PDF)和encrypted_output(存放加密后的文件)。

第二步:构建AES-256加密核心模块

为了确保档案即使被窃取也无法读取,我们将使用AES-256-GCM模式。该模式不仅提供加密,还提供数据完整性校验。新建文件crypto_utils.py,输入以下完整代码:

import os
import hashlib
from Crypto.Cipher import AES
from Crypto.Util.Padding import pad, unpad
from Crypto.Random import get_random_bytes
def generate_key(password: str, salt: bytes = None) -> tuple:
"""
基于密码派生AES-256密钥
"""
if salt is None:
salt = get_random_bytes(16)  生成16字节的随机盐值
使用PBKDF2算法增强密码安全性,迭代次数设为100000
key = hashlib.pbkdf2_hmac('sha256', password.encode('utf-8'), salt, 100000, dklen=32)
return key, salt
def encrypt_file(file_path: str, password: str, output_path: str):
"""
加密文件并保存
"""
1. 生成密钥和盐值
key, salt = generate_key(password)
2. 读取文件内容
with open(file_path, 'rb') as f:
data = f.read()
3. 初始化AES加密器 (GCM模式)
cipher = AES.new(key, AES.MODE_GCM)
ciphertext, tag = cipher.encrypt_and_digest(data)
4. 将盐值、随机数、Tag和密文拼接写入文件
格式: [Salt(16)] + [Nonce(16)] + [Tag(16)] + [Ciphertext]
with open(output_path, 'wb') as f:
[f.write(x) for x in (salt, cipher.nonce, tag, ciphertext)]
print(f"文件已加密: {output_path}")
def decrypt_file(encrypted_path: str, password: str, output_path: str):
"""
解密文件并保存
"""
with open(encrypted_path, 'rb') as f:
读取头部信息
salt = f.read(16)
nonce = f.read(16)
tag = f.read(16)
ciphertext = f.read()
重新生成密钥
key, _ = generate_key(password, salt)
初始化解密器
cipher = AES.new(key, AES.MODE_GCM, nonce=nonce)
try:
data = cipher.decrypt_and_verify(ciphertext, tag)
with open(output_path, 'wb') as f:
f.write(data)
print(f"文件已解密: {output_path}")
return True
except ValueError:
print("错误: 密码错误或文件已被篡改!")
return False

这段代码包含了密钥派生、加密和解密的完整逻辑。其中encrypt_and_digest方法会自动生成一个Nonce(随机数),我们必须将Salt、Nonce和Tag与密文一起保存,否则无法解密。

第三步:集成OCR实现档案数字化

在加密之前,我们通常需要提取档案中的文字信息以便建立索引。新建文件ocr_handler.py,编写如下代码:

Python实现档案数字化加密软件全流程实操

import pytesseract
from PIL import Image
import os
Windows用户如果未配置环境变量,请取消下面这行注释并修改路径
pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe'
def extract_text_from_image(image_path: str) -> str:
"""
从图片中提取文字,支持中文和英文
"""
try:
打开图片
image = Image.open(image_path)
使用Tesseract识别,lang='chi_sim+eng' 表示中英文混合识别
config='--psm 6' 假设图片是统一的文本块
text = pytesseract.image_to_string(image, lang='chi_sim+eng', config='--psm 6')
return text.strip()
except Exception as e:
print(f"OCR识别失败 {image_path}: {str(e)}")
return ""
def process_digitalization(input_folder: str, index_file: str):
"""
批量处理文件夹内的图片,生成文本索引文件
"""
index_data = []
supported_formats = ('.png', '.jpg', '.jpeg', '.bmp', '.tiff')
print("开始数字化处理...")
for filename in os.listdir(input_folder):
if filename.lower().endswith(supported_formats):
full_path = os.path.join(input_folder, filename)
print(f"正在识别: {filename}")
text_content = extract_text_from_image(full_path)
将文件名和识别内容存入列表
index_data.append(f"FILE: {filename}\nCONTENT:\n{text_content}\n{'='40}\n")
将索引写入文本文件
with open(index_file, 'w', encoding='utf-8') as f:
f.writelines(index_data)
print(f"数字化索引已生成: {index_file}")
return index_file

该模块会遍历输入文件夹,调用Tesseract引擎识别图片中的文字,并将所有识别结果汇总到一个index.txt文件中。这个索引文件后续也会被加密,确保敏感信息不泄露。

第四步:编写主控程序实现全流程自动化

现在我们将上述模块整合。新建main.py,这是程序的入口。该程序将自动完成:读取图片 -> OCR提取 -> 生成索引 -> 加密原文件 -> 加密索引文件。

import os
import shutil
from crypto_utils import encrypt_file
from ocr_handler import process_digitalization
配置项
INPUT_DIR = 'input_files'        原始档案存放目录
OUTPUT_DIR = 'encrypted_output'  加密结果存放目录
PASSWORD = 'MySecurePass123!'    设置你的加密密码
def main():
检查目录
if not os.path.exists(INPUT_DIR):
print(f"错误:请先创建 {INPUT_DIR} 目录并放入档案文件")
return
if not os.path.exists(OUTPUT_DIR):
os.makedirs(OUTPUT_DIR)
1. 数字化阶段:生成文本索引
print(" 阶段1:档案数字化与OCR提取 ")
temp_index_path = os.path.join(OUTPUT_DIR, "plain_index.txt")
process_digitalization(INPUT_DIR, temp_index_path)
2. 加密阶段:加密原始文件
print("\n 阶段2:加密原始档案文件 ")
files = os.listdir(INPUT_DIR)
for file in files:
src = os.path.join(INPUT_DIR, file)
dst = os.path.join(OUTPUT_DIR, f"{file}.enc")
encrypt_file(src, PASSWORD, dst)
3. 加密阶段:加密索引文件
print("\n 阶段3:加密数字化索引 ")
encrypt_file(temp_index_path, PASSWORD, os.path.join(OUTPUT_DIR, "index.txt.enc"))
清理明文索引
os.remove(temp_index_path)
print("\n处理完成!所有文件已安全加密并保存至 output 目录。")
if __name__ == "__main__":
main()

将上述代码保存后,在input_files文件夹中放入几张测试用的图片(如扫描件、合同截图等)。然后在终端运行:

python main.py

程序将自动输出处理进度。完成后,检查encrypted_output目录,你会看到所有的.enc文件。尝试用记事本打开这些加密文件,只能看到乱码,无法获取任何原始信息。

第五步:解密与数据恢复实操

为了验证加密系统的可用性,我们需要一个解密脚本。新建decrypt_tool.py

import os
from crypto_utils import decrypt_file
SOURCE_DIR = 'encrypted_output'
RESTORE_DIR = 'restored_files'
PASSWORD = 'MySecurePass123!'  必须与加密密码一致
def main():
if not os.path.exists(RESTORE_DIR):
os.makedirs(RESTORE_DIR)
files = [f for f in os.listdir(SOURCE_DIR) if f.endswith('.enc')]
print(f"发现 {len(files)} 个加密文件,开始恢复...")
for file in files:
enc_path = os.path.join(SOURCE_DIR, file)
去掉.enc后缀作为恢复文件名
original_name = file[:-4]
restore_path = os.path.join(RESTORE_DIR, original_name)
decrypt_file(enc_path, PASSWORD, restore_path)
print("所有文件已恢复至 restored_files 目录")
if __name__ == "__main__":
main()

运行解密脚本:

python decrypt_tool.py

执行完毕后,打开restored_files文件夹。你会看到原始图片完好无损,并且plain_index.txt包含了之前OCR提取出的准确文字内容。如果密码输入错误,控制台会立即抛出异常并中断解密过程,这验证了GCM模式的数据完整性校验功能。

至此,一套完整的、包含OCR数字化提取与AES-256高强加密的档案管理软件已经开发完成。该方案无需任何商业授权,直接基于Python原生库实现,适合企业内部敏感文档的批量自动化安全处理。

商标档案管理系统:别再让商标资产“睡大觉”了!
商标档案管理系统:别再让商标资产“睡大觉”了!
你有没有发现,很多公司花大价钱注册了一堆商标,结果呢?这些商标就像被扔进了仓库角落的旧文件,没人记得、没人维护,甚至快过期了都无人知晓。这事儿吧,说白了就是管理上的一笔“糊涂账”。
2026年09月03日 10:05:21
土木工程建筑业企业档案培训:实用干货全揭秘
土木工程建筑业企业档案培训:实用干货全揭秘
哎,各位土木届的搬砖人、包工头、资料员们,终于挖到个能救咱们半条命的宝贝了——今天要唠的就是跟咱们每天离不开的“工地隐形生命线”有关的【土木工程建筑业企业档案培训】!我可不是啥自媒体瞎忽悠,我是真踩过...
2026年09月03日 10:05:21
微信咨询
电话联系
QQ客服
微信咨询一对一服务
服务热线: 028-8744 4417
QQ客服: 2305721818