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
| Tool | Sprache | Distribution | Performance |
|---|---|---|---|
| DROID | Java | offiziell von TNA | mittel |
| Siegfried | Go | Single-Binary | sehr schnell |
| FIDO | Python | pip install | langsamer, 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.
Links
- FIDO auf GitHub
- FIDO bei der Open Preservation Foundation
- Open Preservation Foundation (OPF)
- PRONOM Online (TNA)
- puidentify auf GitHub — unser PHP-Wrapper für Siegfried/FIDO
- PRONOM-Spickzettel
- Siegfried-Spickzettel