FIDO (Format Identification for Digital Objects) ist ein quelloffener, in Python geschriebener Identifier für Dateiformate. Entwickelt von der Open Preservation Foundation (OPF), nutzt FIDO die PRONOM-Signaturdatenbank und liefert für jede Datei den passenden PUID.

Im Vergleich zu DROID (Java) und Siegfried (Go) ist FIDO leichtgewichtig, lässt sich gut in Python-Pipelines einbinden und ist aufgrund der Pure-Python-Implementation auf praktisch jeder Plattform mit pip schnell installiert.

Installation

pip install opf-fido

# oder isoliert in eigenem virtualenv
python3 -m venv .venv
source .venv/bin/activate
pip install opf-fido

Grundbenutzung

fido <pfad>                              # Datei oder Verzeichnis identifizieren
fido -recurse <verzeichnis>              # rekursiv
fido -input <datei-mit-pfaden.txt>       # Pfade aus einer Liste lesen
fido -zip <archiv.zip>                   # in ZIPs hineinschauen

Der Default-Output ist CSV auf STDOUT, mit einer Zeile pro identifizierter Datei.

Output anpassen

fido -matchprintf "%(info.formatname)s\t%(info.puid)s\t%(info.filename)s\n" \
     -nomatchprintf "NOMATCH\t-\t%(info.filename)s\n" \
     <pfad>

-matchprintf und -nomatchprintf nehmen Python-printf-Strings; verfügbare Felder sind in der FIDO-Doku gelistet (info.formatname, info.puid, info.mimetype, info.matchtype, info.filename, info.filesize, info.signaturename, …).

Signaturen aktualisieren

fido -update          # holt die aktuellen PRONOM- und Container-Signaturen
fido -version         # zeigt FIDO-Version und Signatur-Datums-Stempel

Container-Identifikation

PRONOM-Container-Signaturen erlauben die Identifikation innerhalb von strukturierten Formaten — ein DOCX z. B. ist ZIP plus interne Marker-Files. FIDO liest diese Signaturen automatisch, ohne dass man sie separat anfordern müsste.

Verhalten bei Mehrfach-Match

Wenn mehrere Signaturen passen, gibt FIDO standardmässig alle aus (eine Zeile pro Match). Praktisch zur Disambiguierung; in Pipelines kann man auf den ersten oder strengsten Match filtern. Der info.matchtype zeigt an, wie der Match zustande kam (signature, extension, fail).

Vergleich mit DROID und Siegfried

ToolSpracheDistributionPerformance
DROIDJavaoffiziell von TNAmittel
SiegfriedGoSingle-Binarysehr schnell
FIDOPythonpip installlangsamer, aber einbettungsfreundlich

Alle drei nutzen dieselben PRONOM-Signaturen — die Identifikations-Ergebnisse sollten daher übereinstimmen. Unterschiede sieht man am ehesten in Performance, im Output-Format und bei der Behandlung von Edge Cases (Container, Mehrfach-Matches).

Aus unserer Praxis

Wir nutzen FIDO und Siegfried wechselseitig in unseren Workflows. Damit der Aufruf-Code in Anton und anderen Anwendungen unabhängig vom konkreten Identifier bleibt, haben wir das PHP-Paket puidentify veröffentlicht — es kapselt Siegfried und FIDO hinter einer einheitlichen API. Siehe puidentify in unseren Open-Source-Paketen.