google/magika
Fast and accurate AI powered file content types detection
Magika – AI 駆動のファイルタイプ検出
概要 – Magika は、ファイルのコンテンツタイプ(例:Python ソース、DOCX ドキュメント、INI 設定)を約 99% の精度で識別する、小型で高速なディープラーニングモデルです。ファイルサイズに関係なく、単一 CPU で 1 ファイルあたり約 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 も同梱)。- macOS/Linux では
brew install magika。 - 純粋な Rust インストールには
cargo install --locked magika-cli。 - JS バインディングには
npm install magika。
主な機能
- 小型モデル – わずか数 MB で、配布が簡単。
- 速度 – 一度モデルをロードすれば、1 ファイルあたり約 5 ミリ秒の推論。
- 高信頼モード –
high-confidence、medium-confidence、best-guessにより、再現率と精度をトレードオフできます。 - しきい値システム – タイプごとの信頼度しきい値により、特定のラベルを返すか、一般的な「テキスト」/「バイナリ」にフォールバックするかを決定します。
- バッチ処理 – 1 つのコマンドで数千のファイルを処理できます。
-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)
詳細情報 – プロジェクトの Web サイト、オープンソースリポジトリ、および付随する研究論文(ICSE 2025)には、モデルアーキテクチャ、トレーニングデータ、評価方法が詳しく説明されています。
ライセンスとサポート – Apache 2.0。このプロジェクトはオープンソースですが、Google の公式製品ではありません。セキュリティの問題は magika-dev@google.com に報告してください。
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト