| { |
| "mode": "online", |
| "ui": { |
| "title": "Medieval Illumination Detector", |
| "shortTitle": "IIIF — Illumination Detector", |
| "subtitle": "ONNX • Vue 3 • Mirador", |
| "description": "This interface loads binary image classifiers trained for medieval manuscript folios. It can classify a IIIF manifest or a local image, identify illuminated folios, correct model's suggestions and export the selected canvases as a new IIIF manifest with machine-generated classification annotations.", |
| "descriptionCollapsedByDefault": true, |
| "showHelp": true, |
| "showArtefactsInput": true, |
| "defaultManifestUrl": "https://gallica.bnf.fr/iiif/ark:/12148/btv1b52508970d/manifest.json", |
| "texts": { |
| "showInfo": "Info / Citation", |
| "hideInfo": "Hide", |
| "artefactsLabel": "Artifacts web folder", |
| "artefactsPlaceholder": "../Artefacts", |
| "artefactsHelp": "The browser cannot read arbitrary /Users/... paths directly. Start a local HTTP server and point this field to the served Artefacts directory.", |
| "runsLabel": "Available models", |
| "refreshRuns": "Refresh model list", |
| "loadModel": "Load model", |
| "reset": "Reset", |
| "tabsAriaLabel": "Input mode", |
| "iiifTab": "IIIF Manifest", |
| "imageTab": "Image", |
| "manifestUrlLabel": "IIIF manifest URL", |
| "manifestUrlPlaceholder": "https://.../manifest.json", |
| "loadManifest": "Load manifest", |
| "classify": "Classify", |
| "stop": "Stop", |
| "thresholdLabel": "Illuminated threshold", |
| "threshold": "Threshold", |
| "resetOptimalThreshold": "Reset optimal threshold", |
| "exportFacetSelection": "Export current facet selection (IIIF manifest)", |
| "exportFacetHelp": "The exported manifest contains the folios currently shown by the active facet. Switch facet to export illuminated, non-illuminated, corrected, pending, or all folios.", |
| "optimalThresholdLabel": "Model optimal threshold", |
| "parallelLabel": "Parallelization", |
| "parallelHelp": "Number of folios classified in parallel. Use 1 for maximum stability, or 3–5 for faster processing.", |
| "heuristicSettingsLabel": "Negative heuristic", |
| "heuristicEnabled": "Enable forced non-illuminated labels", |
| "heuristicKeywordsPlaceholder": "One keyword per line", |
| "heuristicKeywordsHelp": "If a canvas label contains one of these keywords, it is classified as non_illuminated without model inference.", |
| "heuristicSkipped": "heuristic non-illuminated", |
| "heuristicHelp": "Negative heuristic: cover/spine/flyleaf/recto/verso labels can be forced to non_illuminated before inference.", |
| "exportManifest": "Export IIIF manifest with illuminations", |
| "pages": "folios", |
| "facetLabel": "Facet", |
| "allFacet": "All", |
| "positiveFacet": "Illuminated (>= threshold)", |
| "negativeFacet": "Non-illuminated", |
| "overriddenFacet": "Corrected (override)", |
| "pendingFacet": "Pending", |
| "errorsFacet": "Errors", |
| "editMode": "Correction mode", |
| "selection": "Selection", |
| "current": "Current", |
| "histogramTitle": "p(illumination) histogram — selection", |
| "histogramHelp": "Click a bar to open the folio", |
| "emptyHistogramTitle": "Empty histogram", |
| "emptyHistogram": "No folio in the selection", |
| "localImageLabel": "Local image", |
| "dropImage": "Drag and drop an image here", |
| "browseImage": "or use the file picker below", |
| "predict": "Predict", |
| "clear": "Clear", |
| "imageHelp": "The prediction and probability bars are displayed on the right.", |
| "imageResult": "Image result", |
| "predictionLabel": "Prediction", |
| "probabilities": "Probabilities", |
| "runPrediction": "Run prediction", |
| "noImageResult": "No result yet.", |
| "loadImageHelp": "Load an image from the Image tab, then click Predict.", |
| "imagePreviewAlt": "Image preview", |
| "classLabelPrefix": "class", |
| "projectLogoAlt": "O.D.I.L. project logo", |
| "expandMirador": "▸ Expand Mirador", |
| "collapseMirador": "▾ Collapse Mirador", |
| "openSelection": "Open selection", |
| "next": "Next", |
| "previous": "Previous", |
| "override": "override", |
| "positiveShort": "illumination", |
| "resetOverride": "Reset", |
| "scoreLabel": "p(illumination)", |
| "statusReady": "Ready. Select a model, then load it.", |
| "statusLoadingRuns": "Loading model list…", |
| "statusOnlineRuns": "Online models", |
| "statusLocalRuns": "Local models found", |
| "statusRunsError": "Unable to load model list.", |
| "statusOnlineRunMissing": "Online model entry not found in app.config.json.", |
| "statusLoadingModel": "Loading ONNX model and configuration…", |
| "statusModelLoaded": "Model loaded", |
| "statusLoadRunError": "Model loading error", |
| "statusResetOk": "Reset complete.", |
| "statusLoadModelFirst": "Load a model first.", |
| "statusLoadingManifest": "Loading manifest…", |
| "statusManifestLoaded": "Manifest loaded", |
| "statusManifestError": "Manifest error", |
| "statusLoadManifestFirst": "Load a manifest first.", |
| "statusLoadModelBeforeImage": "Load a model before adding an image.", |
| "statusDroppedFileNotImage": "The dropped file is not an image.", |
| "statusSelectedFileNotImage": "The selected file is not an image.", |
| "statusClassificationRunning": "Classification running…", |
| "parallelSuffix": "in parallel", |
| "statusStopped": "Stopped", |
| "statusDone": "Done", |
| "positivesAtThreshold": "illuminations at threshold", |
| "statusStopRequested": "Stop requested.", |
| "statusPending": "Pending", |
| "statusError": "Error", |
| "statusProcessing": "Processing…", |
| "statusExportOk": "IIIF v3 manifest exported", |
| "statusImageLoaded": "Image loaded", |
| "statusImageInference": "Running image inference…", |
| "statusImageDone": "Image processed", |
| "statusPredictionError": "Prediction error", |
| "errorModelNotFound": "Unable to find an ONNX model.", |
| "errorNoCanvasImageUrl": "No image URL found for this canvas.", |
| "helpTitle": "Local help", |
| "helpStep1": "1) Place index.html next to app.config.json.", |
| "helpStep2": "2) Start a server from the parent directory: python -m http.server 8000.", |
| "helpStep3": "3) Open http://localhost:8000/web/ and set ../Artefacts as the artifacts web folder." |
| } |
| }, |
| "project": { |
| "show": true, |
| "name": "O.D.I.L.", |
| "description": "This application was created as part of the O.D.I.L. project.", |
| "url": "https://projet.biblissima.fr/fr/appels-projets/projets-retenus/odil-objet-detection-illuminations", |
| "institution": "École nationale des chartes - PSL", |
| "institutionUrl": "https://www.chartes.psl.eu/", |
| "logoUrl": "./assets/images/odil-logo.png" |
| }, |
| "assets": { |
| "iiifLogoUrl": "./assets/images/iiif-logo.png", |
| "projectLogoUrl": "./assets/images/odil-logo.png" |
| }, |
| "labels": { |
| "positive": "illuminated", |
| "negative": "non_illuminated", |
| "positiveAliases": [ |
| "illuminated", |
| "illumination", |
| "illustration", |
| "1" |
| ], |
| "negativeAliases": [ |
| "non_illuminated", |
| "non_illumination", |
| "non_illustration", |
| "0" |
| ] |
| }, |
| "citation": { |
| "show": true, |
| "title": "How to cite", |
| "text": "If you use this application or exported IIIF manifests in your work, please cite the associated software and model repository.", |
| "short": "Terriel, Lucas and Jolivet, Vincent. BSICLE / Medieval Illumination Detector. École nationale des chartes – PSL, O.D.I.L. (Biblissima project), 2026.", |
| "url": "", |
| "linkLabel": "" |
| }, |
| "heuristic": { |
| "enabled": true, |
| "collapsedByDefault": true, |
| "keywordsForceNegative": [ |
| "tranche de tête", |
| "gouttière", |
| "plat", |
| "page de garde", |
| "garde", |
| "page", |
| "dos", |
| "verso", |
| "recto", |
| "contreplat", |
| "reliure", |
| "sup.", |
| "inf.", |
| "ar", |
| "br", |
| "bv", |
| "front", |
| "inside", |
| "flyleaf", |
| "back", |
| "general shot", |
| "cover", |
| "spine" |
| ] |
| }, |
| "local": { |
| "defaultArtefactsBaseUrl": "../Artefacts" |
| }, |
| "online": { |
| "huggingFaceRepoLabel": "ENC-PSL/BSICLE", |
| "huggingFaceRepoURL": "https://huggingface.co/ENC-PSL/BSICLE", |
| "runs": [ |
| { |
| "id": "mobilenetv2", |
| "label": "MobileNet v2", |
| "baseUrl": "https://huggingface.co/ENC-PSL/BSICLE/resolve/main/mobilenetv2" |
| }, |
| { |
| "id": "mobilenetv3_large", |
| "label": "MobileNet v3 large", |
| "baseUrl": "https://huggingface.co/ENC-PSL/BSICLE/resolve/main/mobilenetv3_large" |
| }, |
| { |
| "id": "mobilenetv3_small", |
| "label": "MobileNet v3 small", |
| "baseUrl": "https://huggingface.co/ENC-PSL/BSICLE/resolve/main/mobilenetv3_small" |
| }, |
| { |
| "id": "mobilevitv2", |
| "label": "MobileViTv2", |
| "baseUrl": "https://huggingface.co/lterriel/ENC-PSL/BSICLE/resolve/main/mobilevitv2" |
| } |
| ] |
| } |
| } |