当前位置: 首页 > article >正文

使用Python进行PDF隐私信息检测

在当今,数据隐私保护变得尤为重要。随着越来越多的个人信息以电子形式存储和传输,确保这些信息的安全至关重要。本文将介绍如何使用Python及其相关库来检测PDF文件中的隐私信息,如姓名、身份证号、手机号和邮箱等。
C:\pythoncode\new\checkpersoninfoincontent.py

项目背景

我们的目标是开发一个简单的桌面应用程序,该程序能够加载PDF文件,并检查其中是否包含特定的隐私信息。如果检测到这些信息,程序将显示它们的具体位置(页码和行号)。

技术栈
  • Python: 作为主要编程语言。
  • wxPython: 用于创建图形用户界面。
  • pdfplumber: 用于从PDF文件中提取文本。
  • 正则表达式(re): 用于匹配隐私信息的模式。
代码解析

首先,我们需要安装必要的库:

pip install wxPython pdfplumber

接下来是核心代码部分:

import wx
import pdfplumber
import re

class PDFPrivacyChecker(wx.Frame):
    def __init__(self):
        super().__init__(None, title="PDF 个人隐私检查", size=(600, 400))

        panel = wx.Panel(self)
        vbox = wx.BoxSizer(wx.VERTICAL)

        # 选择文件按钮
        self.btn_select = wx.Button(panel, label="选择 PDF 文件")
        self.btn_select.Bind(wx.EVT_BUTTON, self.on_select_file)
        vbox.Add(self.btn_select, flag=wx.EXPAND | wx.ALL, border=5)

        # 结果显示框(Memo)
        self.memo = wx.TextCtrl(panel, style=wx.TE_MULTILINE | wx.TE_READONLY)
        vbox.Add(self.memo, proportion=1, flag=wx.EXPAND | wx.ALL, border=5)

        panel.SetSizer(vbox)
        self.Show()

    def on_select_file(self, event):
        """ 选择 PDF 文件并分析隐私信息 """
        with wx.FileDialog(self, "选择 PDF 文件", wildcard="PDF 文件 (*.pdf)|*.pdf",
                           style=wx.FD_OPEN | wx.FD_FILE_MUST_EXIST) as fileDialog:
            if fileDialog.ShowModal() == wx.ID_CANCEL:
                return

            pdf_path = fileDialog.GetPath()
            self.memo.SetValue(f"已选择文件: {pdf_path}\n\n正在分析...\n")
            wx.CallLater(100, self.analyze_pdf, pdf_path)

    def analyze_pdf(self, pdf_path):
        """ 分析 PDF 文档中的隐私信息 """
        results = []
        
        # 定义隐私信息匹配规则
        patterns = {
            "姓名": r"[\u4e00-\u9fa5]{2,4}",
            "身份证": r"\b\d{18}|\d{17}X\b",
            "手机号": r"\b1[3-9]\d{9}\b",
            "邮箱": r"[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+",
            "公司": r"[\u4e00-\u9fa5]+公司"
        }

        with pdfplumber.open(pdf_path) as pdf:
            for page_num, page in enumerate(pdf.pages, start=1):
                text = page.extract_text()
                if not text:
                    continue

                lines = text.split("\n")
                for line_num, line in enumerate(lines, start=1):
                    for label, pattern in patterns.items():
                        matches = re.findall(pattern, line)
                        for match in matches:
                            results.append(f"第 {page_num} 页,第 {line_num} 行:{label} - {match}")

        # 显示结果
        if results:
            self.memo.SetValue("\n".join(results))
        else:
            self.memo.SetValue("未检测到隐私信息。")

if __name__ == "__main__":
    app = wx.App(False)
    frame = PDFPrivacyChecker()
    app.MainLoop()

功能说明
  1. 用户界面: 使用wxPython创建一个简单的GUI,包括一个按钮用于选择PDF文件和一个多行文本框用于显示检测结果。
  2. 文件选择: 用户点击“选择PDF文件”按钮后,会弹出一个文件对话框让用户选择要分析的PDF文件。
  3. 隐私信息检测: 使用pdfplumber库读取PDF内容,并利用正则表达式匹配预定义的隐私信息模式。支持的隐私信息包括姓名、身份证号、手机号、邮箱和公司名称。
  4. 结果显示: 如果在PDF中检测到隐私信息,会在文本框中显示每条信息的详细位置(页码和行号)。如果没有检测到任何信息,则显示“未检测到隐私信息”。

运行结果

在这里插入图片描述


http://www.kler.cn/a/555422.html

相关文章:

  • 美团MTSQL特性解析:技术深度与应用广度的完美结合
  • 【FAQ】HarmonyOS SDK 闭源开放能力 —Live View Kit (1)
  • 【Linux】线程概念及控制
  • 体验用ai做了个python小游戏
  • SVN把英文换中文
  • JSON格式,C语言自己实现,以及直接调用库函数(一)
  • Git如何将一个分支的内容同步到另一个分支
  • C# SpinLock 类 使用详解
  • 知识库管理系统驱动企业知识体系重构与智能协作路径解析
  • 大数据治理之solr的体现
  • 03.Docker 命令帮助
  • 鸿蒙-状态管理V1
  • 鸿蒙初学者学习手册(HarmonyOSNext_API14)_自定义动画API(@ohos.animator (动画) )
  • 由浅入深学习大语言模型RLHF(PPO强化学习- v1浅浅的)
  • 人工智能丨OCR 的业务场景,实现原理和测试指标
  • 【开源商城系统是否能直接拿去售卖】
  • 鸿蒙-自定义相机拍照
  • rapidfuzz进阶应用:让模糊匹配更上一层楼,解锁更强大的字符串处理能力!
  • 具身智能在智能巡检机器人中的应用——以开关柜带电操作机器人为例
  • Python 函数-调用函数