news 2026/9/13 8:22:05

Magika standard_v3_0 模型输出内容类型全量清单解析:213 个 Content Type Label 与识别原理

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Magika standard_v3_0 模型输出内容类型全量清单解析:213 个 Content Type Label 与识别原理

Magika standard_v3_0 模型输出内容类型全量清单解析:213 个 Content Type Label 与识别原理

【免费下载链接】magikaFast and accurate AI powered file content types detection项目地址: https://gitcode.com/GitHub_Trending/ma/magika

本文围绕 Magika 当前默认深度学习模型standard_v3_0的输出标签空间展开:完整列出模型可能输出的 213 个内容类型标签(Content Type Label),并结合该模型自带的 config.min.json 与 Python 端推理实现 magika.py,讲清标签的生成链路、预测模式、置信度阈值与输出结构。读完你将能准确解读 Magika 的任意识别结果,并能在自己的代码中直接使用get_supported_content_types()查询当前模型的全部可输出类型。

一、standard_v3_0:当前默认模型的输出标签全集

Magika 在 Python 端将standard_v3_0设为默认模型(见 magika.py 中的DEFAULT_MODEL_NAME = "standard_v3_0",模型文件存放在 assets/models/standard_v3_0/)。该模型的配置 config.min.json 中,target_labels_space字段定义了模型输出层的完整标签空间,共 213 个标签,与模型自带 README(assets/models/standard_v3_0/README.md)列出的清单一一对应。

与上一代standard_v2_1相比,v3.0 的标签空间在末尾新增了randombytesrandomtxtsymlinktext三个内部标签(见 standard_v2_1/config.min.json 中仅有unknown的对比),并通过overwrite_map将它们映射回用户可见的常规标签(详见下文“覆盖映射”小节),同时为handlebarsmarkdown增加了专属高置信度阈值。

1.1 完整标签清单(按索引 1–106)

下表完整继承自模型 README,索引、标签名(Content Type Label)与说明(Description)均保持原样:

IndexContent Type LabelDescription
13gp3GPP multimedia file
2aceACE archive
3aiAdobe Illustrator Artwork
4aidlAndroid Interface Definition Language
5apkAndroid package
6applebplistApple binary property list
7appleplistApple property list
8asmAssembly
9aspASP source
10autohotkeyAutoHotKey script
11autoitAutoIt script
12awkAwk
13batchDOS batch file
14bazelBazel build file
15bibBibTeX
16bmpBMP image data
17bzipbzip2 compressed data
18cC source
19cabMicrosoft Cabinet archive data
20catWindows Catalog file
21chmMS Windows HtmlHelp Data
22clojureClojure
23cmakeCMake build file
24cobolCobol
25coffIntel 80386 COFF
26coffeescriptCoffeeScript
27cppC++ source
28crtCertificates (binary format)
29crxGoogle Chrome extension
30csC# source
31csproj.NET project config
32cssCSS source
33csvCSV document
34dartDart source
35debDebian binary package
36dexDalvik dex file
37dicomDICOM
38diffDiff file
39dmDream Maker
40dmgApple disk image
41docMicrosoft Word CDF document
42dockerfileDockerfile
43docxMicrosoft Word 2007+ document
44dsstoreApplication Desktop Services Store
45dwgAutocad Drawing
46dxfAudocad Drawing Exchange Format
47elfELF executable
48elixirElixir script
49emfWindows Enhanced Metafile image data
50emlRFC 822 mail
51epubEPUB document
52erbEmbedded Ruby source
53erlangErlang source
54flacFLAC audio bitstream data
55flvFlash Video
56fortranFortran
57gemfileGemfile file
58gemspecGemspec file
59gifGIF image data
60gitattributesGitattributes file
61gitmodulesGitmodules file
62goGolang source
63gradleGradle source
64groovyGroovy source
65gzipgzip compressed data
66h5Hierarchical Data Format v5
67handlebarsHandlebars source
68haskellHaskell source
69hclHashiCorp configuration language
70hlpMS Windows help
71htaccessApache access configuration
72htmlHTML document
73icnsMac OS X icon
74icoMS Windows icon resource
75icsInternet Calendaring and Scheduling
76ignorefileIgnorefile
77iniINI configuration file
78internetshortcutMS Windows Internet shortcut
79ipynbJupyter notebook
80isoISO 9660 CD-ROM filesystem data
81jarJava archive data (JAR)
82javaJava source
83javabytecodeJava compiled bytecode
84javascriptJavaScript source
85jinjaJinja template
86jp2jpeg2000
87jpegJPEG image data
88jsonJSON document
89jsonlJSONL document
90juliaJulia source
91kotlinKotlin source
92latexLaTeX document
93lhaLHarc archive
94lispLisp source
95lnkMS Windows shortcut
96luaLua
97m3uM3U playlist
98m4GNU Macro
99machoMach-O executable
100makefileMakefile source
101markdownMarkdown document
102matlabMatlab Source
103mhtMHTML document
104midiMidi
105mkvMatroska
106mp3MP3 media file

1.2 完整标签清单(按索引 107–213)

IndexContent Type LabelDescription
107mp4MP4 media file
108mscompressMS Compress archive data
109msiMicrosoft Installer file
110mumWindows Update Package file
111npyNumpy Array
112npzNumpy Arrays Archive
113nupkgNuGet Package
114objectivecObjectiveC source
115ocamlOCaml
116odpOpenDocument Presentation
117odsOpenDocument Spreadsheet
118odtOpenDocument Text
119oggOgg data
120oneOne Note
121onnxOpen Neural Network Exchange
122otfOpenType font
123outlookMS Outlook Message
124parquetApache Parquet
125pascalPascal source
126pcappcap capture file
127pdbWindows Program Database
128pdfPDF document
129pebinPE Windows executable
130pemPEM certificate
131perlPerl source
132phpPHP source
133picklePython pickle
134pngPNG image
135poPortable Object (PO) for i18n
136postscriptPostScript document
137powershellPowershell source
138pptMicrosoft PowerPoint CDF document
139pptxMicrosoft PowerPoint 2007+ document
140prologProlog source
141proteindbProtein DB
142protoProtocol buffer definition
143psdAdobe Photoshop
144pythonPython source
145pythonbytecodePython compiled bytecode
146pytorchPytorch storage file
147qtQuickTime
148rR (language)
149rarRAR archive data
150rdfResource Description Framework document (RDF)
151rpmRedHat Package Manager archive (RPM)
152rstReStructuredText document
153rtfRich Text Format document
154rubyRuby source
155rustRust source
156scalaScala source
157scssSCSS source
158sevenzip7-zip archive data
159sgmlsgml
160shellShell script
161smaliSmali source
162snapSnap archive
163soliditySolidity source
164sqlSQL source
165sqliteSQLITE database
166squashfsSquash filesystem
167srtSubRip Text Format
168stlbinaryStereolithography CAD (binary)
169stltextStereolithography CAD (text)
170sumChecksum file
171svgSVG Scalable Vector Graphics image data
172swfSmall Web File
173swiftSwift
174tarPOSIX tar archive
175tclTickle
176textprotoText protocol buffer
177tgaTarga image data
178thumbsdbWindows thumbnail cache
179tiffTIFF image data
180tomlTom's obvious, minimal language
181torrentBitTorrent file
182tsvTSV document
183ttfTrueType Font data
184twigTwig template
185txtGeneric text document
186typescriptTypescript
187unknownUnknown binary data
188vbaMS Visual Basic source (VBA)
189vcxprojVisual Studio MSBuild project
190verilogVerilog source
191vhdlVHDL source
192vttWeb Video Text Tracks
193vueVue source
194wasmWeb Assembly
195wavWaveform Audio file (WAV)
196webmWebM media file
197webpWebP media file
198winregistryWindows Registry text
199wmfWindows metafile
200woffWeb Open Font Format
201woff2Web Open Font Format v2
202xarXAR archive compressed data
203xlsMicrosoft Excel CDF document
204xlsbMicrosoft Excel 2007+ document (binary format)
205xlsxMicrosoft Excel 2007+ document
206xmlXML document
207xpiCompressed installation archive (XPI)
208xzXZ compressed data
209yamlYAML source
210yaraYARA rule
211zigZig source
212zipZip archive data
213zlibstreamzlib compressed data

注意:该清单是模型输出层所能输出的全部标签,但并不是 Magika 工具最终可能返回的全部标签。诸如directoryemptysymlinkundefined等标签由工具层直接判定,不经过深度学习模型(详见下文“非模型路径”小节)。

二、从模型输出到最终标签:一条标签的完整生命周期

理解这份清单的意义,关键在于弄清模型预测的标签如何变成你最终看到的label。核心实现在 magika.py 的_get_output_ct_label_from_dl_result()方法,其处理顺序如下:

  1. 覆盖映射(overwrite_map):先将模型输出的标签经overwrite_map重写。standard_v3_0 的映射为{"randomtxt": "txt", "randombytes": "unknown", "symlinktext": "txt"}——即模型在内部用三个额外标签细粒度建模随机文本、随机二进制与符号链接文本,但对用户统一呈现为常规的txt/unknown
  2. 预测模式判定(prediction_mode):根据置信度分数与对应阈值决定是否采信模型结论。
  3. 兜底降级:若分数不足,文本类文件回退为txt,二进制类回退为unknown

2.1 三种预测模式(PredictionMode)

预测模式通过 Python 接口的prediction_mode参数或 CLI 的--prediction-mode指定,逻辑同样位于 magika.py:

模式判定条件行为
BEST_GUESS无条件无论分数高低,直接采信模型预测的标签
HIGH_CONFIDENCE(默认)score >= thresholds[ct],无专属阈值时用medium_confidence_threshold分数达标才采信,否则降级为txt/unknown
MEDIUM_CONFIDENCEscore >= medium_confidence_threshold使用统一宽松阈值(0.5)判定,分数不达标则降级

2.2 standard_v3_0 的阈值配置

来自 config.min.json:

  • medium_confidence_threshold: 0.5:绝大多数类型的默认高置信度阈值。
  • thresholds: {"handlebars": 0.9, "latex": 0.95, "markdown": 0.9, "pascal": 0.95}:这四类文本格式与普通代码文本容易混淆,模型为它们单独设定了更苛刻的高置信度门槛,降低误报率。
  • min_file_size_for_dl: 8:小于等于 8 字节的文件(或去除空白后有效内容不足 8 字节)不进入深度学习推理。
  • padding_token: 256block_size: 4096:特征提取相关的填充标记与单次读取上限。
  • beg_size: 1024mid_size: 0end_size: 1024:v3.0 仅取文件开头 1024 字节与结尾 1024 字节作为模型输入,不再取中段;use_inputs_at_offsets: false表示不额外采样 0x8000/0x8800/0x9000/0x9800 偏移(v2.1 同样为 false,这些偏移位点是为 ISO/UDF 类文件预留的特征)。

特征提取的完整实现(开头 lstrip、结尾 rstrip、padding 补齐等细节)可参见 magika.py 的_extract_features_from_seekable(),其要点是:只读取文件开头与结尾各至多block_size字节,避免将整个文件载入内存。

2.3 非模型路径:清单之外的标签

以下标签不经过深度学习模型,而是由工具层直接判定(见 magika.py):

  • empty:0 字节文件,score固定为 1.0。
  • directory:目录,score固定为 1.0。
  • symlink:配合no_dereference=True(CLI 为-n/--no-dereference)时不解析符号链接,直接返回。
  • undefineddl块中代表“未使用深度学习”,例如过小文件、目录、空文件等场景,此时dl.labelundefined,而output.label为实际判定结果。
  • txt/unknown:文件过小(<= min_file_size_for_dl)时,直接尝试 UTF-8 解码,可解码判为txt,否则判为unknown(见 magika.py)。

因此在实际使用中,你会看到output.label的取值空间 = 上表 213 个标签 + 上述工具层标签。

三、输出结构:dl 与 output 的双层设计

所有语言绑定(Python、JS、Rust、Go 及 CLI)返回统一的输出结构,官方说明见 docs/magika_output.md。以识别一个 JS 文件为例:

$ magika tests_data/basic/javascript/code.js --json [ { "path": "tests_data/basic/javascript/code.js", "result": { "status": "ok", "value": { "dl": { "description": "JavaScript source", "extensions": ["js", "mjs", "cjs"], "group": "code", "is_text": true, "label": "javascript", "mime_type": "application/javascript" }, "output": { "description": "JavaScript source", "extensions": ["js", "mjs", "cjs"], "group": "code", "is_text": true, "label": "javascript", "mime_type": "application/javascript" }, "score": 0.9710000157356262 } } } ]

解读要点:

  • path:本次预测对应的文件路径(批量扫描多个文件时用于区分)。
  • result.statusok表示扫描成功;文件不存在、权限不足等场景返回错误状态。
  • score:模型预测的置信度(0~1)。
  • dl块:深度学习模型的原始预测信息,label对应上表 213 个标签之一(未走模型时为undefined)。
  • output块:Magika 工具层综合模型预测、置信度、预测模式后给出的最终结果,是普通业务代码应直接使用的字段。
  • is_text:是否为文本类型,决定低置信度时回退到txt还是unknown

官方建议“大多数客户端只消费output.label”,原始dl预测主要用于调试。关于为何以label而非description/mime_type作为集成锚点,可参见 docs/faq.md。

四、在代码中查询与使用这套标签

4.1 查询当前模型支持的完整标签列表

Python 端提供了直接接口(magika.py):

from pathlib import Path from magika import Magika m = Magika(model_dir=Path("assets/models/standard_v3_0")) supported = m.get_supported_content_types() print(len(supported)) # 213 print(supported) # 与 README 清单一一对应的 ContentTypeLabel 列表

ContentTypeLabel枚举的完整定义见 python/src/magika/types/content_type_label.py,其中包含全部候选标签(模型实际只支持子集,以上表为准)。

4.2 标签对应的元数据

每个标签对应的描述、MIME 类型、扩展名、分组与is_text信息记录在知识库 python/src/magika/config/content_types_kb.min.json 中(仓库根目录另有可读版本 assets/content_types_kb.min.json)。模型推理时由_load_content_types_kb()载入(magika.py):文本类型默认 MIME 为text/plain,二进制默认application/octet-stream;未提供 description 时回退为标签名本身。

4.3 实战:解析一次识别结果

from pathlib import Path from magika import Magika m = Magika() # 默认加载 standard_v3_0 res = m.identify_path(Path("tests_data/basic/javascript/code.js")) print(res.prediction.dl.label) # javascript(模型原始输出) print(res.prediction.output.label) # javascript(最终输出,业务应使用) print(res.prediction.score) # 置信度,如 0.971...

上述测试样本位于 tests_data/basic/javascript/code.js,Python 端测试用例见 python/tests/test_magika_python_module.py。

五、与其它内置模型的差异速览

仓库内还提供了多个模型,可通过model_dir参数切换:

模型输入特征标签数特性
standard_v3_0(默认)beg 1024 + end 1024213阈值含handlebars/markdown专属配置;overwrite_map映射randombytes/randomtxt/symlinktext
standard_v2_1beg 2048 + end 2048213不含randombytes/randomtxt/symlinktext标签;overwrite_map为空
fast_v2_1beg 512 + end 512213输入更少,速度优先(见 assets/models/fast_v2_1/config.min.json)

三者的medium_confidence_threshold均为 0.5,block_size均为 4096。模型的训练元信息(如 100 个 epoch)记录在 assets/models/standard_v3_0/metadata.json。

六、小结

standard_v3_0的 213 个输出标签构成了 Magika 文件类型识别能力的边界:深度学习模型在这 213 个类别间做概率分布预测,工具层再依据overwrite_map、专属阈值与预测模式做二次裁决,最终通过dl/output双层结构同时暴露原始预测与可信结果。无论是直接阅读 assets/models/standard_v3_0/README.md 中的清单,还是调用get_supported_content_types()在代码中动态获取,你都可以精准掌握当前模型“能识别什么”,从而在设计文件分类、内容安全扫描、上传校验等系统时做出正确的集成决策。

【免费下载链接】magikaFast and accurate AI powered file content types detection项目地址: https://gitcode.com/GitHub_Trending/ma/magika

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/13 8:21:20

Workflow与Agent本质区别:AI应用开发的范式选择指南

1. 什么是 Workflow 与 Agent&#xff1a;不是概念炒作&#xff0c;而是开发路径的分水岭“Workflow 与 Agent&#xff1a;AI 应用的两大范式”——这句话最近在技术社区刷屏&#xff0c;但很多人点开文章后发现&#xff0c;要么堆砌术语讲不清区别&#xff0c;要么拿大模型API…

作者头像 李华
网站建设 2026/9/13 8:20:27

冷启动工具产品设计:从信息断点缝合到协作语义网络

1. 项目概述&#xff1a;一个“冷启动”工具产品的现实主义突围路径“WorkBuddy起于无人问津处&#xff0c;怀着生态‘人声鼎沸’的野心”——这句话不是口号&#xff0c;而是我去年接手一个内部孵化项目时&#xff0c;贴在工位白板上的第一行字。它精准概括了所有从零起步的生…

作者头像 李华
网站建设 2026/9/13 8:16:54

Valkey 如何用 WAITAOF 等待 AOF 落盘完成再继续后续操作?

Valkey 如何用 WAITAOF 等待 AOF 落盘完成再继续后续操作&#xff1f; 【免费下载链接】placeholderkv A flexible distributed key-value database that is optimized for caching and other realtime workloads. 项目地址: https://gitcode.com/GitHub_Trending/pl/placeho…

作者头像 李华
网站建设 2026/9/13 8:16:49

SQL数据补零全攻略:从日期序列到报表连续显示

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/13 8:13:27

STM32平台OPUS编解码器DSP移植与优化实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华