ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

Magika 模型 standard_v2_0 支持的内容类型标签全解析:212 种 Content Type Label 的构成、来源与实战

Magika 模型 standard_v2_0 支持的内容类型标签全解析:212 种 Content Type Label 的构成、来源与实战 Magika 模型 standard_v2_0 支持的内容类型标签全解析212 种 Content Type Label 的构成、来源与实战【免费下载链接】magikaFast and accurate AI powered file content types detection项目地址: https://gitcode.com/GitHub_Trending/ma/magika本篇指南以 assets/models/standard_v2_0/README.md 为核心系统解读 Magika 文件类型识别模型standard_v2_0所支持的212 个内容类型标签Content Type Label完整列出全部标签及其含义并深入到标签空间的生成脚本、content_types_kb元数据知识库、config.min.json模型配置以及 Python 源码调用链说明每个标签从哪里来、由什么决定、如何被使用。读完本文你将能精确掌握 standard_v2_0 模型的输出空间并能够在自己的识别流程中校验、过滤和消费这些标签。一、文档定位一份模型的输出空间权威清单Magika 是一个基于深度学习的文件内容类型检测工具其核心是只看文件内容、不看扩展名的 AI 模型。每个模型训练时都会确定一组可能的输出类别即Content Type Label标签空间label space。模型对任意输入只会从中选择一个或多个候选标签。assets/models/standard_v2_0/README.md正是 standard_v2_0 模型的这份清单标题为Content types supported by model standard_v2_0以三列表格列出 212 个标签Index、Content Type Label、Description。该目录下的完整资产还包括文件作用assets/models/standard_v2_0/README.md本文主体标签空间清单assets/models/standard_v2_0/config.min.json模型配置含target_labels_space、输入窗口、置信度阈值等assets/models/standard_v2_0/metadata.json模型名与命名空间的哈希指纹assets/models/standard_v2_0/model.onnx推理用 ONNX 模型assets/models/standard_v2_0/model.keras训练用 Keras 模型其中config.min.json的target_labels_space数组与 README 表格逐行一一对应共 212 个标签README 本质上是该数组的人类可读展开。这一点在后续生成机制一节会通过源码得到印证。二、standard_v2_0 完整支持的内容类型标签表212 项下表完整继承原文档全部内容并额外补充一列类别该类别取自 assets/content_types_kb.min.json 中每个标签的group字段null表示知识库中未归组。描述列与原文档完全一致均来自知识库的description字段。IndexContent Type LabelDescription类别group13gp3GPP 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音频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可执行146qtQuickTime视频147rR (language)代码/脚本148rarRAR archive data压缩/归档149rdfResource Description Framework document (RDF)纯文本150rpmRedHat Package Manager archive (RPM)压缩/归档151rstReStructuredText document纯文本152rtfRich Text Format document纯文本153rubyRuby source代码/脚本154rustRust source代码/脚本155scalaScala source代码/脚本156scssSCSS source代码/脚本157sevenzip7-zip archive data压缩/归档158sgmlsgml纯文本159shellShell script代码/脚本160smaliSmali source代码/脚本161snapSnap archive压缩/归档162soliditySolidity source代码/脚本163sqlSQL source代码/脚本164sqliteSQLITE database应用165squashfsSquash filesystem压缩/归档166srtSubRip Text Format应用167stlbinaryStereolithography CAD (binary)图像168stltextStereolithography CAD (text)图像169sumChecksum file应用170svgSVG Scalable Vector Graphics image data图像171swfSmall Web File可执行172swiftSwift代码/脚本173tarPOSIX tar archive压缩/归档174tclTickle纯文本175textprotoText protocol buffer代码/脚本176tgaTarga image data图像177thumbsdbWindows thumbnail cache应用178tiffTIFF image data图像179tomlToms obvious, minimal language纯文本180torrentBitTorrent file应用181tsvTSV document代码/脚本182ttfTrueType Font data字体183twigTwig template代码/脚本184txtGeneric text document纯文本185typescriptTypescript纯文本186unknownUnknown binary data未知187vbaMS Visual Basic source (VBA)代码/脚本188vcxprojVisual Studio MSBuild project代码/脚本189verilogVerilog source代码/脚本190vhdlVHDL source代码/脚本191vttWeb Video Text Tracks纯文本192vueVue source代码/脚本193wasmWeb Assembly可执行194wavWaveform Audio file (WAV)音频195webmWebM media file视频196webpWebP media file图像197winregistryWindows Registry text应用198wmfWindows metafile图像199woffWeb Open Font Format字体200woff2Web Open Font Format v2字体201xarXAR archive compressed data压缩/归档202xlsMicrosoft Excel CDF document文档203xlsbMicrosoft Excel 2007 document (binary format)文档204xlsxMicrosoft Excel 2007 document文档205xmlXML document代码/脚本206xpiCompressed installation archive (XPI)压缩/归档207xzXZ compressed data压缩/归档208yamlYAML source代码/脚本209yaraYARA rule代码/脚本210zigZig source代码/脚本211zipZip archive data压缩/归档212zlibstreamzlib compressed data应用从类别分布可以直观看到代码/脚本类标签数量最多约占全部标签的三分之一其次是压缩/归档类与应用类随后是纯文本、文档、图像、可执行等类别另有少量音频、视频、字体类以及unknown、dsstore、parquet等知识库中未明确归组的未知/特殊标签。这体现了 Magika 作为通用文件类型检测器的覆盖面既有常规的图片、音视频、压缩包、文档格式也有大量源码语言和配置格式。三、标签从何而来README 的自动生成机制这份 README 不是手工维护的而是由仓库中的脚本自动生成的。入口脚本为 assets_generation/assets_generation/generate_models_readmes.py第 8 行定义MODELS_NAMES [standard_v2_0, standard_v2_1]即该脚本负责生成 v2_0 与 v2_1 两个模型的 README第 18-25 行读取模型目录下的config.min.json取出target_labels_space数组并加载全局知识库assets/content_types_kb.min.json第 27-30 行遍历标签数组为每个标签生成| 序号 | 标签 | 知识库description |一行第 32-41 行拼装 Markdown 表格头并写出 README。也就是说README 表格的每一行 config.min.json 中target_labels_space的一个元素 content_types_kb 中对应标签的description。这也解释了为什么第一节说 README 与配置数组逐行一一对应它们本质上是同一份数据的两种呈现形式。同理assets/models/standard_v2_1/README.md 也是同一机制生成的产物。四、标签背后的元数据content_types_kb 知识库README 中的Description列全部来自 assets/content_types_kb.min.json。该知识库为每一个可能的内容类型不只是本模型支持的 212 个而是更大的全集定义了五类字段以python为例{ python: { mime_type: text/x-python, group: code, description: Python source, extensions: [py, pyi], is_text: true } }各字段含义字段说明mime_type对应的 MIME 类型如text/x-python、application/zip、image/png部分条目为nullgroup大类分组code、archive、image、document、text、audio、video、executable、application、font、unknown等部分条目为nulldescription人类可读描述即 README 表格的 Description 列extensions该类型的常见扩展名列表如py、pyi供工具提示参考is_text是否为文本类内容供文本检测路径参考在 Python 实现中知识库由 python/src/magika/magika.py 的_load_content_types_kb加载并封装为ContentTypeInfo标签的枚举全集则定义在 python/src/magika/types/content_type_label.py其注释明确说明这是所有已知内容类型的列表但每个模型只支持其中的一个子集详见模型配置。这正是本 README 存在的意义——标明某个具体模型到底支持全集中的哪 212 个。五、模型配置如何定义与约束标签空间standard_v2_0 的 config.min.json 是理解标签空间的总纲。仓库中该文件为压缩后的单行 JSON为便于阅读其字段展开如下{ beg_size: 2048, mid_size: 0, end_size: 2048, use_inputs_at_offsets: false, medium_confidence_threshold: 0.5, min_file_size_for_dl: 8, padding_token: 256, block_size: 4096, target_labels_space: [3gp, ace, ai, ..., zlibstream], thresholds: { latex: 0.95 }, overwrite_map: {} }各字段在识别流程中的角色可从 python/src/magika/magika.py 的_load_model_config中得到印证——它逐字段读取上述配置并构建ModelConfig字段standard_v2_0 取值含义beg_size/end_size2048 / 2048分别从文件头部、尾部提取的字节数经分词后作为模型输入 token 数量mid_size0中间位置采样的 token 数本模型为 0即不采样中间内容block_size4096特征提取时最多读取的原始字节块大小先取前/后block_size字节再做lstrip/rstrip与 padding最后截取beg_size/end_size个 token见 magika.py 的特征提取说明padding_token256输入不足时用于补齐的 token 值medium_confidence_threshold0.5预测置信度分级阈值如 high/medium/low 判定min_file_size_for_dl8触发深度学习检测的最小文件字节数过小文件直接走规则/降级路径use_inputs_at_offsetsfalse是否使用偏移采样输入本模型关闭target_labels_space212 个标签标签空间本体即本 README 的完整内容thresholds{latex: 0.95}对特定标签的额外置信度门槛。从字段结构与命名可以推断当模型预测某文件属于latex时需要达到 0.95 的置信度才会输出该标签即宁可不报不可误报的保守策略overwrite_map{}标签覆写映射如把某个易混淆标签改写为更稳定的标签v2_0 为空Python 侧对应的读取逻辑完整覆盖了上述全部字段magika.py说明这些配置就是模型运行时实际生效的参数。同时 magika.py 展示了模型目录的组织约定模型目录下必须有model.onnx与config.min.json两个文件这也解释了 assets 中每个模型目录的文件结构。六、跨模型标签空间对比v2_0 / v2_1 / v3_0 的演进将本 README 与同仓库其他模型的清单对比可以清晰看出标签空间的演进脉络以下仅陈述各模型配置/README 中可核实的事实standard_v2_1见 assets/models/standard_v2_1/README.md在 v2_0 的 212 个标签基础上新增pytorchPytorch storage file共 213 个标签其他标签及顺序保持一致。当前 Python 发行版内建的 python/src/magika/models/standard_v2_1/ 即包含config.min.json与model.onnx。standard_v3_0见 assets/models/standard_v3_0/config.min.json 与其 README在 v2_1 基础上进一步新增randombytes、randomtxt、symlinktext三个标签并启用了overwrite_map{randomtxt: txt, randombytes: unknown, symlinktext: txt}即把这三个噪声/特殊标签在输出阶段覆写为txt或unknown同时thresholds扩展为handlebars: 0.9、latex: 0.95、markdown: 0.9、pascal: 0.95beg_size/end_size调整为 1024输入窗口变小并新增version_major: 3字段。fast_v2_1 与 begonly_v2_1见 assets/models/fast_v2_1/config.min.json、assets/models/begonly_v2_1/config.min.json同属 v2_1 标签空间含pytorch但为追求速度做了输入裁剪——fast 的beg_size/end_size各 512begonly 仅保留头部beg_size: 2048且end_size: 0两者阈值均为latex: 0.95、pascal: 0.95。可见v2_0 属于相对早期的完整模型后续版本在保持 212 个核心标签基本稳定的前提下主要工作是补充新格式pytorch、增加噪声标签的覆写策略v3_0、以及通过裁剪输入窗口换取推理速度fast/begonly 系列。七、实战在 Python 中获取与消费这些标签标签空间是模型推理结果的上限集合任何一次识别输出的标签都必然落在该集合内。基于 Python 绑定可以这样校验与使用from pathlib import Path from magika import Magika # 1) 使用默认内建模型 magika Magika() # 2) 也可以显式指定模型目录目录内需含 model.onnx 与 config.min.json magika_custom Magika(model_dirPath(assets/models/standard_v2_0)) # 3) 获取当前模型支持的完整标签空间 supported magika.get_supported_content_types() print(len(supported)) # 内建模型对应的标签数量 print(supported[:5]) # 4) 对文件内容做识别 result magika.identify_bytes(bprint(hello, magika)) print(result)上述 API 均有源码依据get_supported_content_types()直接返回self._model_config.target_labels_spacemagika.pyidentify_bytes接受bytes输入magika.pymodel_dir参数用于覆盖默认模型路径magika.py。识别结果的完整字段说明见 docs/magika_output.md。需要注意的一个前提当前 Python 发行版内建的是 fast_v2_1、standard_v2_1 与 standard_v3_0见 python/src/magika/models/ 目录并不直接内建 standard_v2_0如需运行 v2_0应通过model_dir指向 assets 中的 assets/models/standard_v2_0/ 目录该目录含推理所需的model.onnx与config.min.json。仓库中的测试数据可作为标签空间的实证样本例如 tests_data/basic/zip/magika_test.zip 应对应zip标签、tests_data/basic/png/magika_test.png 应对应png标签、tests_data/basic/python/code.py 应对应python标签tests_data/mitra/与tests_data/mitra_candidates/中还覆盖了大量稀有格式如ace.ace、lha.lzh、rar4.rar、sevenzip/7-zip.7z等可用于逐个验证本 README 表格中对应标签的可达性。此外Go 语言实现go/cli/main.go与 Rust 实现rust/也基于同一套模型资产工作标签语义完全一致。八、小结assets/models/standard_v2_0/README.md表面上只是一张 212 行的表格实质上它浓缩了 Magika 模型开发流程中三个关键环节的契约标签空间的定义——由config.min.json的target_labels_space唯一确定README 是其可读呈现语义的权威来源——每个标签的名称与描述来自全局知识库 assets/content_types_kb.min.json并由 generate_models_readmes.py 自动同步生成杜绝手工维护的漂移运行时的一致性——Python 运行时逐字段消费同一份配置magika.py确保文档所见即模型所出。在实际工程中这张表既是白名单校验的依据判断识别结果是否合法、过滤未知标签也是模型选型的参考对比 v2_0/v2_1/v3_0/fast/begonly 的标签与配置差异更是测试用例设计的地图对照 tests_data/ 逐格式验证识别能力。理解这份清单就等于拿到了 Magika 模型输出空间的完整索引。【免费下载链接】magikaFast and accurate AI powered file content types detection项目地址: https://gitcode.com/GitHub_Trending/ma/magika创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表