跳到主要内容
项目档案库 / SDK

Magika:Google AI 文件类型检测工具 - 高精度快速识别 200+ 格式,支持 Python/JS/Go 安装使用

Magika 是 Google 开源的 AI 文件类型检测库,基于深度学习实现 99% 精度、5ms 推理速度。本页提供项目介绍、安装指南(PyPI/npm/Go/Docker)、多语言 API 使用示例及适用场景,帮助开发者快速集成文件识别功能,提升安全扫描效率。

18,625RustStar 于 2026年4月15日2026年9月19日 更新

AI 总结

Magika 是 Google 开源的 AI 文件类型检测库,利用轻量级深度学习模型在 5ms 内精准识别 200+ 文件格式,平均精度达 99%,已规模化应用于 Gmail、Drive 等安全扫描场景。

中文项目介绍

Magika 是 Google 开发的一款基于人工智能的文件类型检测工具,核心采用经过优化的轻量级神经网络模型,仅占用数兆字节存储空间。该模型在约一亿个样本、涵盖两百余种内容类型(包括二进制与文本格式)的数据集上训练与评估,实现了平均约 99% 的检测精度,尤其在文本内容类型上显著优于传统方法。其推理速度极快,单文件处理约需 5 毫秒(CPU 环境),且耗时几乎与文件大小无关,仅需读取文件前 512 字节即可完成预测。 项目解决了传统文件检测依赖文件魔数或扩展名导致的准确率低、泛化能力差的问题,通过从文件内容本身学习深层特征,实现了高精度、低延迟的通用文件识别。Magika 已在实际生产环境中大规模部署,用于 Gmail、Google Drive 和 Safe Browsing 的安全内容扫描,每周处理数千亿文件,同时与 VirusTotal、abuse.ch 等安全平台集成。 Magika 提供多种使用形式:Rust 编写的命令行工具、Python API、JavaScript/TypeScript 绑定(含实验性 npm 包,支持浏览器与 Node.js 环境)以及 Go 语言绑定(进行中)。用户可通过不同置信度模式(如 high-confidence、medium-confidence、best-guess)控制预测严格性,并利用基于内容的阈值系统返回具体类型或通用标签(如“Generic text document”)。

详细信息与使用说明

1. 项目定位与用途

Magika 是 Google 开源的一款 AI 驱动文件类型检测库,旨在通过深度学习提供高精度、低延迟的文件内容识别服务。其核心用途是自动判断文件的实际内容类型(而非依赖扩展名),适用于需要准确分类或安全扫描文件的场景。项目已作为基础设施服务于 Google 产品(如 Gmail、Drive),并集成至 VirusTotal 等安全平台,用于路由文件至相应的安全策略扫描器。开发者可将 Magika 集成至自身系统,实现文件验证、恶意软件分析、自动化分类等功能。

2. 解决的问题

传统文件类型检测主要依赖文件头魔数(magic numbers)或文件扩展名,这种方法对文本文件、复杂容器格式或故意伪装的文件准确率较低,且难以适应新型或罕见格式。Magika 通过训练一个轻量级神经网络模型,直接从文件字节内容中学习判别性特征,从而显著提升检测精度,尤其在文本内容类型上表现突出。模型在约一亿样本的多样化数据集上训练,覆盖 200+ 格式,平均精度与召回率均达到约 99%,有效解决了传统方法泛化能力不足、易被欺骗的问题。

3. 适用场景

Magika 主要适用于以下场景:1) 安全扫描:邮件附件、下载文件、上传内容的类型识别与恶意软件路由;2) 文件管理系统:自动分类、归档与格式验证;3) 恶意软件分析平台:快速识别样本类型以触发相应分析流程;4) 开发与运维:构建工具中验证文件完整性、检测伪装文件;5) 内容策略执行:根据文件类型应用不同的处理策略(如压缩、转码、拦截)。项目已在 Google 内部处理每周数千亿文件,证明其高吞吐与可靠性。

4. 安装方式

根据仓库信息,Magika 提供多种安装途径:1) Python:通过 PyPI 安装,命令为 pip install magika;2) Node.js/JavaScript:通过 npm 安装实验性包,命令为 npm install magika;3) Go:使用 Go 模块获取源码 go get github.com/google/magika/go,但需额外安装 onnxruntime 库并配合构建标签(如 -tags onnxruntime)进行链接;4) Docker:利用仓库中的 Dockerfile 构建包含 Magika 的容器镜像。此外,用户可直接访问项目官网的 Web 演示(在浏览器本地运行)体验功能,无需安装。具体绑定细节请参考各语言目录下的 README(如 go/README.md、js/README.md)。

5. 使用方式

Magika 的使用方式因语言而异:1) 命令行工具(Rust):执行 magika <文件路径> 进行检测,支持 -r 参数递归扫描目录,可同时处理数千个文件;2) Python API:导入 magika 模块,调用预测函数处理文件路径或字节流,支持批量操作;3) Go 绑定:参考 go/example/main.go,使用 magika.NewScanner 指定 assets 目录与模型名称创建扫描器,再调用 Scan 方法传入 io.Reader 与内容长度;4) JavaScript/TypeScript:在 Node.js 或浏览器中,通过 import Magika 或 require('magika') 初始化,调用 identifyBytes 方法传入 Uint8Array 或 Buffer 获取结果。所有绑定共享同一模型资产,预测结果包含标签、置信度及是否可信等信息。

6. 补充说明与实现特点

Magika 的模型文件存储在 assets/models/ 目录下,提供多个版本(如 standard_v3_3、fast_v2_1 等),包含 ONNX 和 Keras 格式,以及配置(config.min.json)与阈值(thresholds.json)文件,用于定义输出标签映射和置信度 cutoff。模型仅分析文件前 512 字节,确保近恒定的推理时间。项目采用 per-content-type 阈值系统,当置信度不足时返回通用标签(如“Unknown binary data”)。用户可通过不同预测模式调整容错性。Go 绑定依赖系统 onnxruntime 库,而 JS 绑定通过预编译 WebAssembly 在浏览器和 Node 中运行,实现跨平台一致性。更多原理细节请参考官网的 Core Concepts 文档。

思维导图

Magika
核心模型
轻量级神经网络(ONNX格式)
训练数据:~100M文件,200+类型
性能:~99%精度,5ms推理
模型版本:standard_v3_3等
多语言绑定
Rust CLI工具
Python API(PyPI)
JavaScript/TypeScript(npm/WASM)
Go绑定(需onnxruntime)
配置与阈值
content_types_config.json
thresholds.json
预测模式:high/medium/best-guess
应用场景
Gmail/Drive安全扫描
VirusTotal集成
abuse.ch集成
文件自动分类
技术特点
仅读取前512字节
近常数推理时间
支持批量与递归扫描
开源(Apache 2.0 推断)

常见问题

Magika 的安装方式有哪些?

支持多种安装:Python 通过 pip install magika;Node.js 通过 npm install magika;Go 通过 go get github.com/google/magika/go(需配合 onnxruntime);也可使用 Docker 构建镜像。具体请参考各语言目录 README。

Magika 支持哪些编程语言?

提供 Rust 编写的命令行工具,以及 Python、JavaScript/TypeScript、Go 语言绑定(Go 绑定仍在进行中),满足不同开发需求。

Magika 的检测精度和速度如何?

在约一亿样本的测试集上,平均精度与召回率均达约 99%;单文件推理约 5 毫秒(CPU),且耗时几乎与文件大小无关。

Magika 的模型文件如何管理和更新?

模型文件位于 assets/models/ 目录,包含多个版本(如 standard_v3_3),提供 ONNX/Keras 格式及配置文件(config.min.json、thresholds.json),可通过更换模型名称使用不同版本。