建筑网站大全免费,电子商务解决方案,网站维护企业,wordpress添加新浪微博0x00 背景
文档中敏感信息识别。不限于word, pdf 等文件格式中的敏感信息及其中的图片敏感信息识别。 0x01 识别原理
以word文档为例
.docx文件有很多种结构#xff0c;这些结构在python-docx中用3种不同的类型来表示#xff1a;最高一层是Document对象表示文档#xff0…0x00 背景
文档中敏感信息识别。不限于word, pdf 等文件格式中的敏感信息及其中的图片敏感信息识别。 0x01 识别原理
以word文档为例
.docx文件有很多种结构这些结构在python-docx中用3种不同的类型来表示最高一层是Document对象表示文档每个Document对象包含一个Paragraph 对象也就是段落组成的列表而每个Paragraph对象则包含一个Run对象的列表
一个Run对象是具有相同格式的文本当发生变化的时候就需要一个新的Run对象
个人觉得读取全部文档信息然后用正则匹配效率比较高。
word 或 pdf 里面有图片的情况涉及到数字图像处理技术。(图片里的敏感信息) 0x02 实现
用到一个库 python-docx
#!pip install python-docx - -userimport docx
import osprint(os.getcwd())
file docx.Document(test.docx)# test.docx #经测试还得是个docx文档doc不行
Test数据匹配数据TestTest 敏感信息print(打印文件行数 str(len(file.paragraphs)))
print(打印第1行: file.paragraphs[0].text)
print(打印第1行长度: str(len(file.paragraphs[0].runs)))
print(打印第3行长度: str(len(file.paragraphs[2].runs)))
print(打印第5行长度: str(len(file.paragraphs[4].runs)))
print(打印第7行长度: str(len(file.paragraphs[6].runs))) # 空格注意for i in range(2):print(file.paragraphs[0].runs[i].text) # 只有len 2print(----------)for i in range(3):print(file.paragraphs[6].runs[i].text) # 只有len 3/4print(----------)# 看样子是根据大小写等样式来区分段落的def getText(fileName):doc docx.Document(fileName)TextList []for paragraph in doc.paragraphs:TextList.append(paragraph.text)return \n.join(TextList)fileName rtest.docx
print(getText(fileName)) test.docx 内容如下
Test数据匹配数据TestTest 敏感信息
我在不同的电脑打印每一行长度有些不同不清楚是否跟word版本以及word
版本内置的字体有关。而且只支持docx暂不支持doc。 打印结果如下
打印文件行数7
打印第1行: Test 数据
打印第1行长度: 2
打印第3行长度: 1
打印第5行长度: 1
打印第7行长度: 3
Test
数据
----------
T
est
敏感信息
----------
Test数据匹配数据TestTest 敏感信息
而在专业版word上执行结果是 : 打印第1行长度: 2 打印第3行长度: 1 打印第5行长度: 2 打印第7行长度: 4 细节问题暂没时间深究猜测和系统默认字体有关理由是在pycharm打开docx文档默认字体不同一个是英文字体一个是等线字体。 0x03 reference
【数据安全】一文读懂数据内容识别核心技术 – 绿盟科技技术博客
了解基于确切数据匹配的敏感信息类型 | Microsoft Learn -- 微软EDM敏感信息识别
python使用docx模块读写docx文件的方法与docx模块常用方法_docx.document_癫疯时刻的博客-CSDN博客
用Python读写Word文档入门-腾讯云开发者社区-腾讯云
python解析并读取PDF文件函数总结_pypdf读取章节内容_满腹的小不甘的博客-CSDN博客 0x04 后记
python 识别pdf 中敏感信息见 reference 里的链接。python 识别pdf 推荐 pdfminer3k 或 pdfplumber 两个库。 由于时间关系本文写的略简洁敏感图片识别也没有介绍到后续如果有时间会继续修改完善本文。