⠀⠀⠀⠀⠀⠀⠀⣤⣤⣄⣀⡀⠀⠀⠀⢀⣠⣤⣤⣄⡀⠀⠀⠀⢀⣀⣠⣤⣤⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠸⣿⣿⡿⠿⢿⣷⡄⢠⣿⣿⣿⣿⣿⣿⡄⢀⣾⡿⠿⢿⣿⣿⠇⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠈⠉⠀⠀⢸⣿⡇⢸⣿⣿⣿⣿⣿⣿⡇⢸⣿⡇⠀⠀⠉⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⣠⣤⡀⠀⠀⠀⠀⠀⠀⠀⢸⣿⡇⢸⣿⣿⣿⣿⣿⣿⡇⢸⣿⡇⠀⠀⠀⠀⠀⠀⠀⢀⣤⣄⠀⠀⠀
⠸⣿⣿⣿⣿⣿⣿⣿⣿⣦⠀⢸⣿⡇⢸⣿⣿⣿⣿⣿⣿⡇⢸⣿⡇⠀⣴⣿⣿⣿⣿⣿⣿⣿⣿⠇⠀⠀
⠀⠉⠉⠁⠀⠀⠀⠀⣿⣿⠀⢸⣿⡇⠀⠉⣿⣿⣿⣿⠉⠀⢸⣿⡇⠀⣿⣿⠀⠀⠀⠀⠈⠉⠉⠀⠀⠀ O C T O P I I
⠀⠀⠀⠀⠀⠀⠀⠀⣿⣿⣀⣈⣻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣟⣁⣀⣿⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠘⠿⠿⠿⠿⠿⣿⣿⣿⣿⣿⣿⣿⣿⠿⠿⠿⠿⠿⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀(c) Copyright 2022 RedHunt Labs Private Limited
⠀⠀⠀⠀⠀⠀⢀⣤⣤⣤⣤⣤⣤⣴⣿⣿⣿⡇⢸⣿⡿⣿⣦⣤⣤⣤⣤⣤⣤⡀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⢸⣿⠋⠉⠉⠉⠉⠉⠉⢸⣿⡇⢸⣿⡇⠈⠉⠉⠉⠉⠉⠙⣿⣧⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⢰⣿⣿⣦⠀⢰⣿⣿⣦⠀⢸⣿⡇⢸⣿⡇⠀⣰⣿⣿⡆⠀⣴⣿⣿⡆⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠈⠻⠿⠋⠀⠘⣿⣿⠃⠀⢸⣿⡇⢸⣿⡇⠀⠘⣿⣿⠃⠀⠙⠿⠟⠁⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢻⣿⣦⣤⣼⣿⠃⠘⣿⣧⣄⣤⣿⡟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠛⠛⠛⠁⠀⠀⠈⠛⠛⠛⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
项目地址
https://github.com/redhuntlabs/Octopii
Octopii
Octopii 是一款由人工智能驱动的开源个人身份信息 (PII) 扫描工具,可以在目录中查找政府 ID、护照、照片和签名等图像资产。
正在进行的
Octopii 使用 Tesseract 的光学字符识别 (OCR) 和 Keras 的卷积神经网络 (CNN) 模型来检测可能在面向公众的位置泄漏的各种形式的个人身份信息。 这是通过以下步骤完成的:
- 导入和清理图像
图像通过 OpenCV 导入,并经过清理、校正和旋转以进行扫描。
- 执行图像分类
扫描图像的特征,例如 ISO/IEC 7810 卡规格、颜色、文本位置、照片、全息图等。这是通过传递图像并将其与经过训练的模型进行比较来完成的。
- 光学字符识别 (OCR)
作为最终的验证方法,扫描特定字符串的图像以验证模型的准确性。
扫描的准确性可以通过输出中的置信度分数来确定。 如果满足上述所有条件,则返回 100.0 分。
训练模型,也可以将数据输入到 model_generator.py
脚本中,可以使用新改进的h5文件。
用法
- 通过安装所有依赖项
pip install -r requirements.txt
。 - 通过(对于 Ubuntu/Debian)在本地安装 Tesseract 助手
sudo apt install tesseract-ocr -y
。 python3 octopii.py <location name>
例如, 要运行 Octopii,请键入python3 octopii.py pii_list/
python3 octopii.py <location to scan> <additional flags>
Octopii 目前支持本地扫描和扫描 S3 目录,并通过它们的 URL 打开目录列表。
例子
owais@artemis ~ $ python3 octopii.py pii_list
Not a valid image format: pii_list/aadhaar/aadhaar-8.gif
[
{
"asset_type": "Bank",
"confidence": 100.0,
"file_name": "passbook",
"extension": "jpeg",
"path": "pii_list/bank/passbook.jpeg"
},
{
"asset_type": "Photo",
"confidence": 99.98,
"file_name": "IMG-20200331-WA0037",
"extension": "jpg",
"path": "pii_list/photos/IMG-20200331-WA0037.jpg"
},
{
"asset_type": "PAN",
"confidence": 100.0,
"file_name": "pan-7",
"extension": "jpg",
"path": "pii_list/pan/pan-7.jpg"
},
{
"asset_type": "Aadhaar",
"confidence": 97.31,
"file_name": "aadhaar-14",
"extension": "jpg",
"path": "pii_list/aadhaar/aadhaar-14.jpg"
}
]
贡献
像这样的开源项目在社区支持下蓬勃发展。 由于 Octopii 严重依赖机器学习和光学字符识别,因此非常感谢您的贡献。 贡献方式如下:
1.Fork
在https://github.com/redhuntlabs/octopii fork官方存储库
2. 解释
目录中有3个文件 models/
。
- 该
keras_models.h5
文件是 Keras h5 模型,可以从 Google 的 Teachable Machine 或通过 Python 中的 Keras 获得。 - 该
labels.txt
文件包含与模型返回的索引对应的标签列表。 - 该
ocr_list.json
文件包含在 OCR 扫描期间要搜索的关键字,以及其他杂项信息,例如原产国、正则表达式等。
通过 Teachable Machine 生成模型
由于我们当前的数据集非常小,我们可以从该项目的国际 PII 的大型 Keras 模型中获益。 如果您不具备 Keras 方面的专业知识,Google 提供了一个非常易于使用的模型生成器,称为 Teachable Machine。 使用它:
- 访问 https://teachablemachine.withgoogle.com/train 并选择“Image Project”→“Standard Image Model”。
- 一些类是可见的。 将类重命名为您想要上传的资产类型,例如“德国护照”或“加利福尼亚驾照”。
- 通过单击“上传”按钮添加图像并上传一些图像资源。 注意:图片必须是方形的
提示:将您的图像资产隔离到文件夹中,文件夹名称与类名称相同。 然后,您可以将文件夹拖放到上传对话框中。
注意:只上传与班级名称相同的,例如德国护照班级必须有德国护照照片。 将错误的数据上传到错误的类会混淆机器学习算法。
- 单击页面底部的“+ 添加类”以添加更多包含数据的类并重复。 您可以使类更具体,例如“Goa Driver License Old Format”。
- 最后一次验证类和图像。 准备就绪后,单击“训练模型”按钮。 您可以增加 epoch 大小(例如 5000)以提高模型准确性。
- 要进行测试,您可以通过单击“输入”下拉菜单并选择“文件”来测试模型,然后上传示例图像。
- 准备就绪后,单击“导出模型”按钮。 在弹出的对话框中,选择“Tensorflow”选项卡(不是 Tensorflow.js)并选择“Keras”单选按钮,然后单击“下载我的模型”以导出新生成的模型。 解压下载的zip文件,将
keras_model.h5
文件和labels.txt
文件粘贴到models/
Octopii中的目录中。
我们看不到用于上述模型的图像,因为它们采用专有格式。 您可以同时使用虚拟 PII 和实际 PII。 确保它们的图像大小是方形的。
更新 OCR 列表
使用 Teachable Machine 生成模型后,您可以通过 OCR 提高 Octopii 的准确性。 去做这个:
- 打开现有
ocr_list.json
文件。 使用与资产类同名的键创建一个 JSONObject。 注意:密钥名称必须与 Teachable Machine 中的资产类别名称完全相同。 - 对于
keywords
,请尽可能多地使用资产中的独特术语,例如“所得税部门”。 将它们存储在 JSONArray 中。 - (高级) 您还可以为护照上的身份证号码和机读区等内容添加正则表达式,如果它们足够独特的话。 在添加之前使用 https://regex101.com 测试您的正则表达式。
- 保存/覆盖现有
ocr_list.json
文件。
models/
通过上述方法创建或编辑后, 您可以替换目录中修改的每个文件。- 从您的分叉回购中提交拉取请求,我们将提取它并将其添加到我们当前的模型中。
注意: 请采取以下步骤以确保质量
- 首先在本地进行测试,确保模型返回极其准确的结果。
- 在 Keras 模型和
ocr_list.json
. - 确保所有 JSON 都有效,并使用适当的字符转义,没有重复的键、正则表达式或关键字。
- 对于国家名称,请使用国家的 ISO 3166-1 alpha-2 代码。
没有回复内容