Magika هي أداة جديدة للكشف عن أنواع الملفات مدعومة بالذكاء الاصطناعي وتعتمد على التقدم الأخير في التعلم العميق لتوفير اكتشاف دقيق. تحت الغطاء، تستخدم Magika نموذج Keras المخصص والمحسن للغاية والذي يزن حوالي بضعة ميغابايت فقط، ويتيح التعرف الدقيق على الملف في غضون ميلي ثانية، حتى عند التشغيل على وحدة معالجة مركزية واحدة.
في تقييم يضم أكثر من مليون ملف وأكثر من 100 نوع محتوى (يغطي كلاً من تنسيقات الملفات الثنائية والنصية)، يحقق Magika دقة واستدعاء بنسبة 99%+. يتم استخدام Magika على نطاق واسع للمساعدة في تحسين سلامة مستخدمي Google من خلال توجيه ملفات Gmail وDrive والتصفح الآمن إلى أدوات فحص الأمان وسياسة المحتوى المناسبة. اقرأ المزيد في ورقتنا البحثية!
يمكنك تجربة Magika دون تثبيت أي شيء باستخدام عرض الويب الخاص بنا، والذي يتم تشغيله محليًا في متصفحك!
فيما يلي مثال لما يبدو عليه إخراج سطر أوامر Magika:
لمزيد من السياق، يمكنك قراءة منشور إعلاننا الأولي على مدونة Google OSS
مهم
نحن على وشك إطلاق عدد من الأشياء الجديدة، وهي جاهزة للاختبار!
نموذج جديد لتعلم الآلة مع دعم لأكثر من 200 نوع محتوى.
CLI جديد مكتوب بلغة Rust. سيحل هذا محل سطر الأوامر السابق المكتوب بلغة بايثون. مزيد من المعلومات هنا. يمكن أيضًا استخدام قاعدة بيانات Rust للتطبيقات المكتوبة بلغة Rust، راجع المستندات.
حزمة Python 0.6.0rc1: يشحن هذا الإصدار النموذج الجديد مع دعم لأكثر من 200 نوع محتوى، وواجهة سطر الأوامر المكتوبة بلغة Rust (والتي تحل محل القديم المكتوب بلغة python)، وواجهة برمجة تطبيقات Python المُجددة مع بعض التغييرات العاجلة، راجع المستندات وسجل التغيير! إذا كنت بحاجة إلى مستندات حول الإصدار الثابت، فتصفح هذا المستودع على أحدث علامة ثابتة، هنا.
متوفر كأداة سطر أوامر مكتوبة بلغة Rust، وPython API، وRust API، وإصدار TFJS التجريبي (الذي يعمل على تشغيل العرض التوضيحي على الويب الخاص بنا).
تم التدريب على مجموعة بيانات تضم أكثر من 25 مليون ملف عبر أكثر من 100 نوع محتوى.
وفقًا لتقييمنا، حققت Magika معدل دقة واسترجاع بنسبة 99%+، متفوقة على الأساليب الحالية.
أكثر من 200 نوع محتوى (انظر القائمة الكاملة).
بعد تحميل النموذج (هذه عملية تحميل لمرة واحدة)، يبلغ وقت الاستدلال حوالي 5 مللي ثانية لكل ملف.
التجميع: يمكنك تمرير ملفات متعددة إلى سطر الأوامر وواجهة برمجة التطبيقات (API) في نفس الوقت، وسيستخدم Magika التجميع لتسريع وقت الاستدلال. يمكنك استدعاء Magika حتى مع آلاف الملفات في نفس الوقت. يمكنك أيضًا استخدام -r
لفحص الدليل بشكل متكرر.
وقت الاستدلال شبه الثابت بشكل مستقل عن حجم الملف؛ يستخدم Magika فقط مجموعة فرعية محدودة من بايتات الملف.
يستخدم Magika نظام عتبة لكل نوع محتوى يحدد ما إذا كان يجب "الثقة" في التنبؤ الخاص بالنموذج، أو ما إذا كان سيتم إرجاع تسمية عامة، مثل "مستند نصي عام" أو "بيانات ثنائية غير معروفة".
دعم ثلاثة أوضاع تنبؤ مختلفة، تعمل على تعديل التسامح مع الأخطاء: high-confidence
، medium-confidence
، وأفضل best-guess
.
انها مفتوحة المصدر! (والمزيد لم يأت بعد.)
لمزيد من التفاصيل، راجع الوثائق الخاصة بحزمة python وحزمة js (مستندات التطوير).
ابدء
سطر أوامر بايثون
واجهة برمجة تطبيقات بايثون
نموذج TFJS التجريبي وحزمة npm
تثبيت
يعمل على دوكر
الاستخدام
إعداد التطوير
وثائق هامة
القيود المعروفة والمساهمة
الأسئلة المتداولة
موارد إضافية
ورقة بحثية واستشهاد
رخصة
تنصل
Magika متاح كـ magika
على PyPI:
$ نقطة تثبيت Magika
إذا كنت تنوي استخدام Magika فقط كسطر أوامر، فقد ترغب في استخدام $ pipx install magika
بدلاً من ذلك.
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
سطر الأوامر الجديد مكتوب بلغة Rust، وهو متوفر في حزمة magika
python.
أمثلة:
$ cd test_data/basic && magika -r *asm/code.asm: التجميع (الكود) Batch/simple.bat: ملف دفعي DOS (رمز) c/code.c: مصدر C (الكود) css/code.css: مصدر CSS (الكود) csv/magika_test.csv: مستند CSV (الكود) ملف dockerfile/Dockerfile: ملف Dockerfile (الكود) docx/doc.docx: مستند Microsoft Word 2007+ (مستند) epub/doc.epub: مستند EPUB (مستند) epub/magika_test.epub: مستند EPUB (مستند) flac/test.flac: بيانات تدفق البت الصوتي FLAC (الصوت) المقاود/example.handlebars: مصدر المقاود (الكود) html/doc.html: مستند HTML (رمز) ini/doc.ini: ملف تكوين INI (نص) javascript/code.js: مصدر JavaScript (الكود) jinja/example.j2: قالب Jinja (الكود) jpeg/magika_test.jpg: بيانات صورة JPEG (صورة) json/doc.json: مستند JSON (الكود) latex/sample.tex: مستند LaTeX (نص) makefile/simple.Makefile: مصدر Makefile (الكود) markdown/README.md: مستند تخفيض السعر (نص) [...]
$ magika ./tests_data/basic/python/code.py --json [ { "المسار": "./tests_data/basic/python/code.py"، "result": { "status": "ok"، "value": { "dl": { "description": "مصدر بايثون" ، "الامتدادات": [ "py"، "pyi" ]، "group": "code"، "is_text": صحيح، "label": "python"، "mime_type": "text/x-python" }, "output": { "description": "مصدر بايثون"، "الامتدادات": [ "py"، "pyi" ]، "group": "code"، "is_text": صحيح، "label": "python"، "mime_type": "text/x-python" }, "النتيجة": 0.753000020980835 } } } ]
$ القط doc.ini | ماجيكا - -: ملف التكوين INI (نص)
$ ماجيكا --مساعدة يحدد نوع محتوى الملفات من خلال التعلم العميق الاستخدام: ماجيكا [خيارات] [مسار]... الوسيطات: [المسار]... قائمة المسارات إلى الملفات لتحليلها. استخدم شرطة (-) للقراءة من الإدخال القياسي (يمكن استخدامه مرة واحدة فقط). خيارات: -r، - عودي يحدد الملفات داخل الدلائل بدلاً من تحديد الدليل نفسه --لا يوجد احترام يحدد الروابط الرمزية كما هي بدلاً من تحديد محتواها من خلال متابعتها --الألوان يطبع بالألوان بغض النظر عن الدعم الطرفي --لا ألوان يطبع بدون ألوان بغض النظر عن دعم المحطة -s، --output-score طباعة درجة التنبؤ بالإضافة إلى نوع المحتوى -i، --mime-type طباعة نوع MIME بدلاً من وصف نوع المحتوى -ل، --التسمية طباعة تسمية بسيطة بدلاً من وصف نوع المحتوى --json يطبع بتنسيق JSON --jsonl يطبع بتنسيق JSONL --تنسيق <مخصص> تتم الطباعة باستخدام تنسيق مخصص (استخدم --help للحصول على التفاصيل). يتم دعم العناصر النائبة التالية: %p مسار الملف %l التسمية الفريدة التي تحدد نوع المحتوى %d وصف نوع المحتوى %g مجموعة نوع المحتوى %m نوع MIME لنوع المحتوى %e امتدادات الملفات المحتملة لنوع المحتوى %s درجة نوع محتوى الملف %S درجة نوع محتوى الملف بالنسبة المئوية %b مخرجات النموذج إذا تم إبطالها (فارغة وإلا) %% حرفي % -ح، --مساعدة تعليمات الطباعة (راجع الملخص الذي يحتوي على '-h') -V، - الإصدار نسخة مطبوعة
انظر هنا لمزيد من الوثائق التفصيلية.
أمثلة:
>>> من magika import Magika>>> m = Magika()>>> res = m.identify_bytes(b"# مثالnهذا مثال على تخفيض السعر!")>>> print(res.output.label)markdown
راجع وثائق بايثون للحصول على وثائق مفصلة.
نحن نقدم أيضًا Magika كحزمة تجريبية للأشخاص المهتمين باستخدامها في تطبيق ويب. لاحظ أن أداء تنفيذ Magika JS أبطأ بشكل ملحوظ ويجب أن تتوقع إنفاق أكثر من 100 مللي ثانية لكل ملف.
راجع وثائق js للحصول على التفاصيل.
راجع قسم "إعداد التطوير" في مستندات بايثون.
وثائق حول CLI
وثائق حول Rust CLI الجديد
وثائق حول الارتباطات للغات المختلفة
قائمة بأنواع المحتوى المدعومة (للإصدار 1، والمزيد في المستقبل).
قائمة أنواع المحتوى المدعومة للنموذج الجديد
وثائق حول كيفية تفسير مخرجات Magika.
الأسئلة المتداولة
تتحسن Magika بشكل ملحوظ مقارنة بأحدث ما توصلت إليه التكنولوجيا، ولكن هناك دائمًا مجال للتحسين! يمكن القيام بالمزيد من العمل لزيادة دقة الكشف، ودعم أنواع المحتوى الإضافية، والارتباطات لمزيد من اللغات، وما إلى ذلك.
لا يستهدف هذا الإصدار الأولي الكشف عن متعدد اللغات، ونحن نتطلع إلى رؤية أمثلة عدائية من المجتمع. نود أيضًا أن نسمع من المجتمع حول المشكلات التي تمت مواجهتها، والاكتشافات الخاطئة، وطلبات الميزات، والحاجة إلى الدعم لأنواع المحتوى الإضافية، وما إلى ذلك.
تحقق من مشكلات GitHub المفتوحة لدينا لمعرفة ما هو موجود في خريطة الطريق الخاصة بنا ويرجى الإبلاغ عن الاكتشافات الخاطئة أو طلبات الميزات إما عن طريق فتح مشكلات GitHub (المفضل) أو عن طريق مراسلتنا عبر البريد الإلكتروني على [email protected].
ملحوظة: لا ترسل تقارير حول الملفات التي قد تحتوي على معلومات تحديد الهوية الشخصية، فالتقرير يحتوي على جزء (صغير) من محتوى الملف!
راجع CONTRIBUTING.md
للحصول على التفاصيل.
لقد قمنا بجمع عدد من الأسئلة الشائعة هنا.
مشاركة مدونة Google OSS حول إعلان Magika.
عرض الويب: عرض الويب.
نحن نصف كيف قمنا بتطوير Magika والاختيارات التي قمنا بها في ورقتنا البحثية.
إذا كنت تستخدم هذا البرنامج لبحثك، يرجى ذكره على النحو التالي:
@misc{magika, title={{Magika: اكتشاف نوع المحتوى المدعوم بالذكاء الاصطناعي}}، المؤلف={{فراتانتونيو، يانيك وإنفيرنيزي، لوكا وفرح، لوا وكورت، توماس وتشانغ، مارينا وألبرتيني، أنجي وجاليلي , فرانسوا وميتييري، جيانكارلو وكريتين، جوليان وبيتي بيانكو، ألكسندر وتاو، ديفيد وبورستين، إيلي}}، year={2024}، eprint={2409.13768}، archivePrefix={arXiv}, PrimaryClass={cs. سجل تجاري}، URL={https://arxiv.org/abs/2409.13768}، }
يرجى الاتصال بنا مباشرة على [email protected]
أباتشي 2.0؛ راجع LICENSE
للحصول على التفاصيل.
هذا المشروع ليس مشروع Google رسميًا. إنه غير مدعوم من Google، وتخلي Google مسؤوليتها على وجه التحديد من جميع الضمانات المتعلقة بجودتها أو قابليتها للتسويق أو ملاءمتها لغرض معين.