google/magika

Fast and accurate AI powered file content types detection

Magika – AI 驱动的文件类型检测

它是什么 – Magika 是一个小型、快速的深度学习模型,能以约 99% 的准确率识别文件的内容类型(例如,Python 源代码、DOCX 文档、INI 配置)。它在单个 CPU 上每文件约 5 毫秒即可完成,与文件大小无关,因为它只查看文件字节的有限切片。

为什么重要 – 传统的文件类型嗅探器依赖文件扩展名或简单的魔数启发式方法,这些方法可能被欺骗或遗漏不常见的格式。Magika 的神经模型在涵盖 200 多种二进制和文本格式的约 1 亿个样本上训练,为安全管道、内容策略扫描器以及任何需要知道“这个文件到底是什么”的工作流提供了更可靠的信号。

如何使用

  • CLI(基于 Rust)– magika <path>…,支持递归、JSON 输出、仅 MIME 类型、自定义格式等选项。
  • Python 库 – from magika import Magika; Magika().identify_path('file') 返回一个丰富的结果对象。
  • JavaScript/TypeScript – 一个实验性的 npm 包驱动 Web 演示,可在 Node 或浏览器中使用。
  • Go – 开发中的绑定。

安装快捷方式

  • pipx install magika 或 pip install magika 用于 Python 包(也包含 CLI)。
  • brew install magika 在 macOS/Linux 上。
  • cargo install --locked magika-cli 用于纯 Rust 安装。
  • npm install magika 用于 JS 绑定。

主要特性

  • 微型模型 – 仅几 MB,易于分发。
  • 速度 – 一次性模型加载后,每文件推理约 5 毫秒。
  • 高置信度模式 – high-confidence、medium-confidence、best-guess 让您在召回率和精确率之间权衡。
  • 阈值系统 – 每种类型的置信度阈值决定是返回特定标签还是回退到通用“文本”/“二进制”。
  • 批量处理 – 一条命令可处理数千个文件;-r 递归扫描目录。
  • 跨语言绑定 – Rust CLI、Python API、JS/TS npm 包、即将推出的 Go 支持。

实际应用 – Google 大规模使用 Magika 将数十亿个 Gmail、Drive 和 Safe-Browsing 文件路由到适当的安全扫描器。它也已集成到 VirusTotal 和 abuse.ch 的恶意软件分析平台中。

快速开始

# 通过 pipx 安装 CLI(包含 Rust 二进制)
pipx install magika

# 识别单个文件
magika myscript.py

# 用于自动化的 JSON 输出
magika myscript.py --json

# 递归扫描整个目录
magika -r /path/to/files

Python 示例

from magika import Magika
m = Magika()
result = m.identify_path('example.docx')
print(result.output.label)   # → docx
print(result.score)          # 置信度分数(0-1)

了解更多 – 项目网站、开源仓库以及随附的研究论文(ICSE 2025)详细介绍了模型架构、训练数据和评估方法。

许可证与支持 – Apache 2.0。该项目是开源的,但不是 Google 官方产品;安全问题应报告至 magika-dev@google.com。

相关

  • 项目
  • 项目
  • 项目
  • 项目
  • 项目