Magika adalah alat deteksi jenis file bertenaga AI baru yang mengandalkan kemajuan pembelajaran mendalam terkini untuk memberikan deteksi yang akurat. Di balik terpalnya, Magika menggunakan model Keras khusus yang sangat optimal yang hanya berbobot sekitar beberapa MB, dan memungkinkan identifikasi file secara akurat dalam hitungan milidetik, bahkan ketika dijalankan pada satu CPU.
Dalam evaluasi dengan lebih dari 1 juta file dan lebih dari 100 tipe konten (mencakup format file biner dan tekstual), Magika mencapai presisi dan perolehan 99%+. Magika digunakan dalam skala besar untuk membantu meningkatkan keamanan pengguna Google dengan merutekan file Gmail, Drive, dan Penjelajahan Aman ke pemindai kebijakan keamanan dan konten yang tepat. Baca lebih lanjut di makalah penelitian kami!
Anda dapat mencoba Magika tanpa menginstal apa pun dengan menggunakan demo web kami, yang berjalan secara lokal di browser Anda!
Berikut adalah contoh tampilan keluaran baris perintah Magika:
Untuk konteks lebih lanjut Anda dapat membaca postingan pengumuman awal kami di blog OSS Google
Penting
Kami akan merilis sejumlah hal baru, dan semuanya siap untuk diuji!
Model ML baru dengan dukungan untuk 200+ jenis konten.
CLI baru yang ditulis dalam Rust. Ini akan menggantikan CLI sebelumnya yang ditulis dengan python. Informasi lebih lanjut di sini. Basis kode Rust juga dapat digunakan untuk aplikasi yang ditulis dengan karat, lihat dokumen.
Paket Python 0.6.0rc1: versi ini mengirimkan model baru dengan dukungan untuk 200+ jenis konten, CLI yang ditulis dalam Rust (yang menggantikan yang lama yang ditulis dengan python), dan API Python yang diperbarui dengan beberapa perubahan yang dapat menyebabkan gangguan, lihat dokumen dan log perubahan! Jika Anda memerlukan dokumen tentang rilis stabil, telusuri repositori ini dengan tag stabil terbaru, di sini.
Tersedia sebagai alat baris perintah yang ditulis dalam Rust, API Python, API Rust, dan versi TFJS eksperimental (yang mendukung demo web kami).
Dilatih pada kumpulan data lebih dari 25 juta file di lebih dari 100 jenis konten.
Berdasarkan evaluasi kami, Magika mencapai presisi dan perolehan rata-rata 99%+, mengungguli pendekatan yang ada.
Lebih dari 200 tipe konten (lihat daftar lengkap).
Setelah model dimuat (ini adalah overhead satu kali), waktu inferensi adalah sekitar 5 ms per file.
Batching: Anda dapat meneruskan beberapa file ke baris perintah dan API secara bersamaan, dan Magika akan menggunakan batching untuk mempercepat waktu inferensi. Anda dapat memanggil Magika bahkan dengan ribuan file secara bersamaan. Anda juga dapat menggunakan -r
untuk memindai direktori secara rekursif.
Waktu inferensi yang hampir konstan, terlepas dari ukuran file; Magika hanya menggunakan sebagian kecil byte file.
Magika menggunakan sistem ambang batas per jenis konten yang menentukan apakah akan "mempercayai" prediksi model, atau apakah akan mengembalikan label umum, seperti "Dokumen teks umum" atau "Data biner tidak diketahui".
Mendukung tiga mode prediksi berbeda, yang menyesuaikan toleransi terhadap kesalahan: high-confidence
, medium-confidence
, dan best-guess
.
Ini sumber terbuka! (Dan masih banyak lagi yang akan datang.)
Untuk lebih jelasnya lihat dokumentasi paket python dan paket js (dev docs).
Memulai
Baris perintah piton
API Python
Model TFJS eksperimental & paket npm
Instalasi
Berjalan di Docker
Penggunaan
Pengaturan Pengembangan
Dokumentasi Penting
Keterbatasan & Kontribusi yang Diketahui
Pertanyaan yang Sering Diajukan
Sumber Daya Tambahan
Makalah Penelitian dan Kutipan
Lisensi
Penafian
Magika tersedia sebagai magika
di PyPI:
$ pip instal ajaib
Jika Anda ingin menggunakan Magika hanya sebagai baris perintah, Anda mungkin ingin menggunakan $ pipx install magika
sebagai gantinya.
git clone https://github.com/google/magika cd magika/ docker build -t magika . docker run -it --rm -v $(pwd):/magika magika -r /magika/tests_data
Baris perintah baru ditulis dalam Rust, dan tersedia dalam paket magika
python.
Contoh:
$ cd tes_data/basic && magika -r *asm/code.asm: Majelis (kode) batch/simple.bat: file batch DOS (kode) c/code.c: Sumber C (kode) css/code.css: sumber CSS (kode) csv/magika_test.csv: Dokumen CSV (kode) dockerfile/Dockerfile: Dockerfile (kode) docx/doc.docx: Dokumen Microsoft Word 2007+ (dokumen) epub/doc.epub: dokumen EPUB (dokumen) epub/magika_test.epub: dokumen EPUB (dokumen) flac/test.flac: data bitstream audio FLAC (audio) handlebars/example.handlebars: Sumber setang (kode) html/doc.html: dokumen HTML (kode) ini/doc.ini: File konfigurasi INI (teks) javascript/code.js: sumber JavaScript (kode) jinja/example.j2: Templat Jinja (kode) jpeg/magika_test.jpg: Data gambar JPEG (gambar) json/doc.json: dokumen JSON (kode) latex/sample.tex: dokumen LaTeX (teks) makefile/simple.Makefile: Sumber Makefile (kode) penurunan harga/README.md: Dokumen penurunan harga (teks) [...]
$ magika ./tests_data/basic/python/code.py --json [ { "path": "./tests_data/basic/python/code.py", "result": { "status": "ok", "value": { "dl": { "description": "Sumber python" , "ekstensi": [ "py", "pyi" ], "grup": "kode", "is_text": benar, "label": "python", "mime_type": "teks/x-python" }, "output": { "deskripsi": "Sumber python", "ekstensi": [ "py", "pyi" ], "grup": "kode", "is_text": benar, "label": "python", "mime_type": "teks/x-python" }, "skor": 0,753000020980835 } } } ]
$cat doc.ini | ajaib - -: File konfigurasi INI (teks)
$ magika --bantuan Menentukan jenis konten file dengan pembelajaran mendalam Penggunaan: magika [PILIHAN] [JALAN]... Argumen: [JALAN]... Daftar jalur ke file yang akan dianalisis. Gunakan tanda hubung (-) untuk membaca dari input standar (hanya dapat digunakan satu kali). Pilihan: -r, --rekursif Mengidentifikasi file dalam direktori alih-alih mengidentifikasi direktori itu sendiri --tidak ada-dereferensi Mengidentifikasi tautan simbolik apa adanya alih-alih mengidentifikasi kontennya dengan mengikutinya --warna Mencetak dengan warna apa pun dukungan terminalnya --tanpa warna Mencetak tanpa warna terlepas dari dukungan terminal -s, --skor keluaran Mencetak skor prediksi selain tipe konten -i, --tipe pantomim Mencetak tipe MIME dan bukan deskripsi tipe konten -l, --label Mencetak label sederhana, bukan deskripsi tipe konten --json Mencetak dalam format JSON --jsonl Mencetak dalam format JSONL --formatMencetak menggunakan format khusus (gunakan --help untuk detailnya). Placeholder berikut ini didukung: %p Jalur berkas %l Label unik yang mengidentifikasi tipe konten %d Deskripsi tipe konten %g Grup tipe konten %m Tipe MIME dari tipe konten %e Kemungkinan ekstensi file untuk tipe konten %s Skor tipe konten untuk file %S Skor tipe konten file dalam persen %b Output model jika ditolak (kosongkan jika tidak) %% Secara harafiah % -h, --membantu Bantuan cetak (lihat ringkasan dengan '-h') -V, --versi Versi cetak
Lihat di sini untuk dokumentasi lebih detail.
Contoh:
>>> dari magika import Magika>>> m = Magika()>>> res = m.identify_bytes(b"# ContohnIni adalah contoh penurunan harga!")>>> print(res.output.label)penurunan harga
Lihat dokumentasi python untuk dokumentasi detailnya.
Kami juga menyediakan Magika sebagai paket eksperimental bagi orang-orang yang tertarik menggunakan aplikasi web. Perhatikan bahwa kinerja implementasi Magika JS jauh lebih lambat dan Anda harus menghabiskan 100 ms+ per file.
Lihat dokumentasi js untuk detailnya.
Lihat bagian "Pengaturan Pengembangan" di dokumen python.
Dokumentasi tentang CLI
Dokumentasi tentang Rust CLI baru
Dokumentasi tentang penjilidan untuk berbagai bahasa
Daftar tipe konten yang didukung (untuk v1, lebih banyak lagi yang akan datang).
Daftar tipe konten yang didukung untuk model baru
Dokumentasi tentang cara menafsirkan keluaran Magika.
Pertanyaan yang Sering Diajukan
Magika meningkat secara signifikan dibandingkan yang canggih, tetapi selalu ada ruang untuk perbaikan! Lebih banyak pekerjaan yang dapat dilakukan untuk meningkatkan akurasi deteksi, dukungan untuk tipe konten tambahan, pengikatan untuk lebih banyak bahasa, dll.
Rilis awal ini tidak menargetkan deteksi poliglot, dan kami menantikan contoh-contoh yang merugikan dari komunitas. Kami juga ingin mendengar pendapat komunitas tentang masalah yang dihadapi, kesalahan deteksi, permintaan fitur, kebutuhan dukungan untuk jenis konten tambahan, dll.
Periksa masalah GitHub kami yang terbuka untuk melihat apa yang ada di peta jalan kami dan harap laporkan kesalahan deteksi atau permintaan fitur dengan membuka masalah GitHub (lebih disukai) atau dengan mengirim email kepada kami di [email protected].
CATATAN: JANGAN mengirimkan laporan tentang file yang mungkin berisi PII, laporan tersebut berisi (sebagian kecil) isi file!
Lihat CONTRIBUTING.md
untuk detailnya.
Kami telah mengumpulkan sejumlah FAQ di sini.
Entri blog OSS Google tentang pengumuman Magika.
Demo web: demo web.
Kami menjelaskan bagaimana kami mengembangkan Magika dan pilihan yang kami buat dalam makalah penelitian kami.
Jika Anda menggunakan perangkat lunak ini untuk penelitian Anda, harap kutip sebagai:
@misc{magika, title={{Magika: Deteksi Jenis Konten yang Didukung AI}}, author={{Fratantonio, Yanick dan Invernizzi, Luca dan Farah, Loua dan Kurt, Thomas dan Zhang, Marina dan Albertini, Ange dan Galilee , Francois dan Metitieri, Giancarlo dan Cretin, Julien dan Petit-Bianco, Alexandre dan Tao, David dan Bursztein, Elie}}, year={2024}, eprint={2409.13768}, archivePrefix={arXiv}, primaryClass={cs. CR}, url={https://arxiv.org/abs/2409.13768}, }
Silakan hubungi kami langsung di [email protected]
Apache 2.0; lihat LICENSE
untuk detailnya.
Proyek ini bukan proyek resmi Google. Hal ini tidak didukung oleh Google dan Google secara khusus menyangkal semua jaminan mengenai kualitas, kelayakan untuk diperdagangkan, atau kesesuaian untuk tujuan tertentu.