Magika:用AI识别文件类型,毫秒级判定200余种内容格式

Magika:用AI识别文件类型,毫秒级判定200余种内容格式 Magika用AI识别文件类型毫秒级判定200余种内容格式【免费下载链接】magikaFast and accurate AI powered file content types detection项目地址: https://gitcode.com/GitHub_Trending/ma/magika文件扩展名会撒谎一个.txt可能其实是可执行文件。Magika 是一款 AI 驱动的文件内容类型检测工具它不看文件名而是直接分析文件的字节流在纯 CPU 上以毫秒级速度判定 200 多种内容类型。30秒速览能做什么识别 200 余种文本与二进制内容类型官方评测精度与召回率均超 99%单文件推理约 5ms支持一次性传入上千个文件做批量推理也支持递归扫描整个目录不能做什么不处理 polyglot同一文件同时符合多种格式定义的文件检测不提供内容类型之外的细粒度元数据比如 ELF 是静态还是动态链接JS 版性能明显低于 Rust 版适合谁做安全扫描与内容路由管道的工程师、想替代file命令的开发者、需要可靠文件类型判断的自动化流程运行平台跨平台Linux / macOS / Windows提供 Rust CLI、Python API、Rust API 和实验性的 TFJS 版本架构拆解项目按模型 各语言实现组织各部分职责如下模型层模型文件 下有三档模型fast / standard 等版本以 ONNX 格式分发体积只有几 MB加载一次后可反复调用Python 包Python 核心实现 提供Magika类与identify_path、identify_bytes等 API内部通过 maturin 调用 Rust 核心Rust 实现Rust 核心库 承载特征提取与推理rust/cli是基于它构建的新版命令行替代了旧的 Python CLIJS 版本js/目录提供 TFJS 实现的同模型包主要驱动 Web 演示速度较慢但可在浏览器本地运行测试数据tests_data/按内容类型组织了大量样例文件既可用于自测也能帮你直观理解支持的类型从零跑起来第一步克隆仓库并安装仓库里自带测试数据装好包后可以直接拿来验证git clone https://gitcode.com/GitHub_Trending/ma/magika cd magika pip install magika如果只想用命令行而不写代码把pip换成pipx更干净。第二步扫描测试目录用仓库自带的tests_data/basic目录验证安装是否成功magika -r tests_data/basic输出形如docx/doc.docx: Microsoft Word 2007 document (document)-r表示递归识别目录内的每个文件。第三步把检测结果接进脚本需要机器可读的输出时加--jsonl每行一个 JSON或直接用标准输入喂单个文件cat tests_data/basic/ini/doc.ini | magika -第四步在 Python 代码中调用API 只有三行先建实例再调方法from magika import Magika m Magika() res m.identify_bytes(b# Example\nThis is an example of markdown!) print(res.output.label) # markdown关键配置速查CLI 选项很多这几个最影响你的工作流选项作用建议场景-r/--recursive递归识别目录下所有文件批量审计--label输出稳定短标签如python自动化管道官方强烈建议--jsonl每行一个 JSON 对象脚本化解析--format CUSTOM用%l %m %s等占位符自定义输出定制报表-s附带置信度分数判断结果可信度为什么推荐--label因为自然语言描述和 MIME 类型都可能随版本变动file命令就改过 JavaScript 的输出文案而标签是面向自动化流程设计的稳定字段详见 FAQ。真实场景落地场景一云端文件的安全分流。背景Gmail、Google Drive 这类产品需要把上传文件路由给对应的安全扫描器而攻击者常靠改扩展名伪装文件。操作文件落盘后先过一遍magika拿到真实内容类型再分发。效果仓库 README 提到该模型已在 Google 内部大规模用于此类路由99% 的精度意味着绝大多数文件不会再被扩展名欺骗。场景二仓库级批量审计。背景接手一个陌生代码仓库想快速摸清里面混进了哪些格式。操作magika -r --jsonl .扫描全目录按label字段聚合统计。效果模型只读取文件的有限字节子集推理时间基本与文件大小无关几千个文件单次调用即可跑完。场景三验证伪装文件。背景邮件里收到一个.txt文件直觉不太对。操作对文件运行magika -s 文件名。效果输出会直接告诉你真实类型和置信度——仓库测试数据里就有一个名为magika_test_pptx.txt的样例实际是 PPTX。踩坑与排错现象识别单个文件耗时几百毫秒和宣传的 5ms 不符。原因模型加载与解释器启动是一次性开销5ms 指的是加载后的单次推理。解决把多个文件合并成一次调用模型只加载一次且内部自动做 batching。现象结果返回Generic text document或Unknown binary data而不是具体类型。原因每个内容类型有独立阈值置信度不够时模型宁可返回泛化标签。解决这是特性不是错误确需要更激进的猜测时可在 Python API 中切换到best-guess预测模式。现象在浏览器里跑 JS 版单文件要 100ms 以上。原因TFJS 实现性能显著低于 Rust/Python 版。解决性能敏感场景改用 CLI 或 Python APIJS 版只适合加载一次模型、跑多次推理的部署。现象某个文件被识别错了。原因任何检测器都不可能 100% 正确社区也在收集误报样例。解决按 CONTRIBUTING.md 开 issue 反馈注意报告中会包含一小段文件内容别提交含隐私数据的文件。扩展与社区想参与贡献或请求新的内容类型直接看 CONTRIBUTING.md。生态上项目同步维护 Python、Rust、JS 三套绑定见 docs/bindings.md配套研究论文已被 ICSE 2025 接收后续计划主要是扩充内容类型覆盖和更多语言绑定。几 MB 的模型、毫秒级的判断Magika 让文件类型识别变成一件可以默认信任的事。【免费下载链接】magikaFast and accurate AI powered file content types detection项目地址: https://gitcode.com/GitHub_Trending/ma/magika创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考