Magika简介
Magika是Google开发的一款基于深度学习的文件类型检测工具。它采用高度优化的Keras模型,模型大小仅约1MB,即使在单CPU上也能在毫秒级内完成精确的文件识别。在超过100万文件和100多种内容类型的评估中,Magika实现了99%以上的精确度和召回率。
主要特性
- 提供Python命令行、Python API和实验性TFJS版本
- 在超过2500万个文件的数据集上训练,涵盖100多种内容类型
- 模型加载后,每个文件的推理时间约为5毫秒
- 支持批处理,可同时处理多个文件以提高效率
- 推理时间几乎与文件大小无关,仅使用文件的有限字节子集
- 采用每种内容类型的阈值系统,决定是否"信任"模型预测
- 支持三种不同的预测模式:高置信度、中等置信度和最佳猜测
快速开始
安装
Magika可通过PyPI安装:
pip install magika
使用Docker运行
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
Python命令行使用示例
$ magika -r tests_data/
tests_data/README.md: Markdown document (text)
tests_data/basic/code.asm: Assembly (code)
tests_data/basic/code.c: C source (code)
...
$ magika code.py --json
[
{
"path": "code.py",
"dl": {
"ct_label": "python",
"score": 0.9940916895866394,
"group": "code",
"mime_type": "text/x-python",
"magic": "Python script",
"description": "Python source"
},
"output": {
"ct_label": "python",
"score": 0.9940916895866394,
"group": "code",
"mime_type": "text/x-python",
"magic": "Python script",
"description": "Python source"
}
}
]
Python API使用示例
>>> from magika import Magika
>>> m = Magika()
>>> res = m.identify_bytes(b"# Example\nThis is an example of markdown!")
>>> print(res.output.ct_label)
markdown
重要文档
开发设置
Magika使用poetry进行开发和打包:
$ git clone https://github.com/google/magika
$ cd magika/python
$ poetry shell && poetry install
$ magika -r ../tests_data
运行测试:
$ cd magika/python
$ poetry shell
$ pytest tests/
其他资源
贡献与反馈
Magika团队欢迎社区贡献,包括提高检测准确性、支持更多内容类型、增加更多语言绑定等。如果遇到问题或有功能请求,可以通过GitHub issues或发送邮件至magika-dev@google.com反馈。
🚀 Magika作为一个开源项目,正在不断发展和完善。无论你是开发者、研究人员还是对文件类型检测感兴趣的用户,都可以从这个强大的工具中受益。赶快开始探索Magika的魔力吧!