-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathUSER_MANUAL_IT.html
More file actions
2002 lines (1668 loc) · 103 KB
/
Copy pathUSER_MANUAL_IT.html
File metadata and controls
2002 lines (1668 loc) · 103 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
<!DOCTYPE html>
<html lang="it">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>OffGallery — Manuale Utente</title>
<meta name="description" content="Manuale utente completo di OffGallery: catalogazione automatica di foto RAW con analisi semantica, embedding SigLIP, ricerca intelligente e gestione offline.">
<meta property="og:title" content="OffGallery — Manuale Utente">
<meta property="og:description" content="Manuale utente completo di OffGallery: catalogazione automatica di foto RAW con analisi semantica, embedding SigLIP, ricerca intelligente e gestione offline.">
<meta property="og:type" content="website">
<meta property="og:url" content="https://offgallery.app/USER_MANUAL_IT.html">
<link rel="canonical" href="https://offgallery.app/USER_MANUAL_IT.html">
<link rel="alternate" hreflang="it" href="https://offgallery.app/USER_MANUAL_IT.html">
<link rel="alternate" hreflang="en" href="https://offgallery.app/USER_MANUAL_EN.html">
<link rel="alternate" hreflang="x-default" href="https://offgallery.app/USER_MANUAL_EN.html">
<style>
/* ===== FONT & BASE ===== */
@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500&display=swap');
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
body {
font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
font-size: 15px;
line-height: 1.7;
color: #1a1a2e;
background: #f8f9fb;
}
/* ===== LAYOUT ===== */
.page-wrapper {
display: flex;
min-height: 100vh;
}
nav#toc {
width: 260px;
min-width: 260px;
background: #1a1a2e;
color: #c8cde0;
padding: 32px 0;
position: sticky;
top: 0;
height: 100vh;
overflow-y: auto;
flex-shrink: 0;
}
nav#toc .toc-logo {
padding: 16px 20px 24px;
border-bottom: 1px solid #2e3050;
text-align: center;
}
nav#toc .toc-logo img {
width: 100%;
max-width: 210px;
height: auto;
border-radius: 6px;
display: block;
margin: 0 auto 8px;
}
nav#toc .toc-logo span {
font-size: 12px;
font-weight: 600;
color: #6a70a0;
display: block;
letter-spacing: 0.08em;
text-transform: uppercase;
}
nav#toc ul {
list-style: none;
padding: 16px 0;
}
nav#toc ul li a {
display: block;
padding: 6px 24px;
color: #9aa0bc;
text-decoration: none;
font-size: 13px;
font-weight: 500;
transition: all 0.15s;
border-left: 3px solid transparent;
}
nav#toc ul li a:hover {
color: #fff;
background: #252843;
border-left-color: #5b6ef5;
}
nav#toc ul li.section-title a {
color: #fff;
font-size: 11px;
font-weight: 700;
letter-spacing: 0.08em;
text-transform: uppercase;
padding-top: 18px;
padding-bottom: 4px;
cursor: default;
}
nav#toc ul li.sub a {
padding-left: 38px;
font-size: 12.5px;
font-weight: 400;
}
.content {
flex: 1;
padding: 48px 60px 80px;
max-width: 860px;
}
/* ===== COVER PAGE ===== */
.cover {
text-align: center;
padding: 60px 0 80px;
border-bottom: 2px solid #e2e5f0;
margin-bottom: 60px;
}
.cover img.logo {
width: 420px;
max-width: 90%;
height: auto;
border-radius: 16px;
box-shadow: 0 8px 32px rgba(91,110,245,0.25);
margin-bottom: 28px;
}
.cover h1 {
font-size: 38px;
font-weight: 700;
color: #1a1a2e;
letter-spacing: -0.02em;
margin-bottom: 8px;
}
.cover .subtitle {
font-size: 18px;
color: #5b6ef5;
font-weight: 500;
margin-bottom: 20px;
}
.cover .meta {
font-size: 13px;
color: #8a90a8;
}
/* ===== HEADINGS ===== */
h1 { font-size: 30px; font-weight: 700; color: #1a1a2e; margin: 48px 0 16px; letter-spacing: -0.01em; }
h2 { font-size: 22px; font-weight: 700; color: #1a1a2e; margin: 40px 0 12px; padding-bottom: 8px; border-bottom: 2px solid #e2e5f0; }
h3 { font-size: 17px; font-weight: 600; color: #2d3063; margin: 28px 0 10px; }
h4 { font-size: 14px; font-weight: 600; color: #5b6ef5; margin: 20px 0 8px; text-transform: uppercase; letter-spacing: 0.06em; }
.section-number {
display: inline-block;
background: #5b6ef5;
color: #fff;
font-size: 11px;
font-weight: 700;
padding: 2px 8px;
border-radius: 4px;
margin-right: 8px;
vertical-align: middle;
}
/* ===== PARAGRAPHS & LISTS ===== */
p { margin-bottom: 14px; }
ul, ol {
margin: 10px 0 16px 24px;
}
ul li, ol li {
margin-bottom: 6px;
}
ul li ul {
margin-top: 4px;
}
/* ===== CODE ===== */
code {
font-family: 'JetBrains Mono', 'Courier New', monospace;
font-size: 13px;
background: #eef0f8;
color: #3a3f6b;
padding: 2px 6px;
border-radius: 4px;
}
pre {
background: #1a1a2e;
color: #c8cde0;
padding: 20px 24px;
border-radius: 10px;
overflow-x: auto;
margin: 16px 0;
font-family: 'JetBrains Mono', monospace;
font-size: 13px;
line-height: 1.6;
}
/* ===== TABLES ===== */
table {
width: 100%;
border-collapse: collapse;
margin: 16px 0 24px;
font-size: 14px;
}
thead th {
background: #1a1a2e;
color: #fff;
padding: 10px 14px;
text-align: left;
font-weight: 600;
font-size: 13px;
}
tbody tr:nth-child(even) { background: #f2f4fb; }
tbody tr:hover { background: #e8ebf8; }
tbody td {
padding: 9px 14px;
border-bottom: 1px solid #e2e5f0;
vertical-align: top;
}
tbody td strong { color: #2d3063; }
/* ===== CALLOUT BOXES ===== */
.callout {
border-radius: 10px;
padding: 16px 20px;
margin: 20px 0;
display: flex;
gap: 14px;
align-items: flex-start;
}
.callout .icon { font-size: 20px; flex-shrink: 0; margin-top: 1px; }
.callout .body { flex: 1; }
.callout .body strong { display: block; margin-bottom: 4px; font-size: 14px; }
.callout .body p { margin: 0; font-size: 14px; }
.callout.tip { background: #edf6ff; border-left: 4px solid #2196f3; }
.callout.tip .icon { color: #2196f3; }
.callout.tip .body strong { color: #0d6eab; }
.callout.warning { background: #fff8e1; border-left: 4px solid #ff9800; }
.callout.warning .icon { color: #ff9800; }
.callout.warning .body strong { color: #b36a00; }
.callout.note { background: #f3f0ff; border-left: 4px solid #7c4dff; }
.callout.note .icon { color: #7c4dff; }
.callout.note .body strong { color: #5230b5; }
.callout.success { background: #e8f5e9; border-left: 4px solid #4caf50; }
.callout.success .icon { color: #4caf50; }
.callout.success .body strong { color: #2e7d32; }
/* ===== SCREENSHOTS ===== */
.screenshot-wrap {
text-align: center;
margin: 28px 0;
}
.screenshot-wrap img {
max-width: 100%;
border-radius: 12px;
box-shadow: 0 4px 24px rgba(0,0,0,0.12);
border: 1px solid #dde0f0;
}
.screenshot-wrap figcaption {
margin-top: 10px;
font-size: 13px;
color: #7a80a0;
font-style: italic;
}
/* ===== BADGE / LABEL ===== */
.badge {
display: inline-block;
padding: 3px 9px;
border-radius: 20px;
font-size: 12px;
font-weight: 600;
vertical-align: middle;
margin: 0 3px;
}
.badge.blue { background: #dbe9ff; color: #1a5fa8; }
.badge.green { background: #dff5e3; color: #2a7a42; }
.badge.orange { background: #fff0d6; color: #9a5c00; }
.badge.purple { background: #ede8ff; color: #5230b5; }
.badge.red { background: #ffe8e8; color: #a83232; }
/* ===== STEP LIST ===== */
.steps { counter-reset: step; list-style: none; margin: 16px 0 24px 0; }
.steps li {
counter-increment: step;
display: flex;
gap: 16px;
margin-bottom: 16px;
align-items: flex-start;
}
.steps li::before {
content: counter(step);
background: #5b6ef5;
color: #fff;
min-width: 28px;
height: 28px;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
font-weight: 700;
font-size: 13px;
flex-shrink: 0;
margin-top: 1px;
}
.steps li p { margin: 0; }
/* ===== DIVIDER ===== */
hr { border: none; border-top: 2px solid #e2e5f0; margin: 48px 0; }
/* ===== PRINT ===== */
@media print {
body { background: #fff; font-size: 13px; }
nav#toc { display: none; }
.content { max-width: 100%; padding: 20px 24px; }
.cover { padding: 40px 0 50px; }
h1 { font-size: 24px; page-break-before: always; }
h2 { font-size: 18px; page-break-after: avoid; }
h3 { page-break-after: avoid; }
.screenshot-wrap img { max-width: 90%; }
.callout { page-break-inside: avoid; }
table { page-break-inside: avoid; }
a { color: inherit; text-decoration: none; }
pre { white-space: pre-wrap; word-break: break-word; }
.page-wrapper { display: block; }
}
</style>
</head>
<body>
<div class="page-wrapper">
<!-- ===== SIDEBAR ===== -->
<nav id="toc">
<div class="toc-logo">
<img src="../assets/logo3.jpg" alt="Logo">
<span>OffGallery</span>
</div>
<ul>
<li class="section-title"><a>Introduzione</a></li>
<li><a href="#intro">Cos'è OffGallery</a></li>
<li><a href="#primo-avvio">Primo Avvio</a></li>
<li><a href="#interfaccia">Panoramica Interfaccia</a></li>
<li class="sub"><a href="#stato-modelli">Indicatori di Stato Modelli</a></li>
<li class="section-title"><a>Tab Principali</a></li>
<li><a href="#elaborazione">Tab Processing</a></li>
<li class="sub"><a href="#elab-sorgente">Sorgente Immagini</a></li>
<li class="sub"><a href="#elab-modalita">Modalità Elaborazione</a></li>
<li class="sub"><a href="#elab-ai">Opzioni AI</a></li>
<li class="sub"><a href="#solo-gen-ai">Solo Gen. AI</a></li>
<li class="sub"><a href="#elab-avvio">Avvio e Monitoraggio</a></li>
<li><a href="#ricerca">Tab Ricerca</a></li>
<li class="sub"><a href="#cerca-semantica">Ricerca Semantica</a></li>
<li class="sub"><a href="#cerca-tag">Ricerca per Tag</a></li>
<li class="sub"><a href="#cerca-filtri">Filtri Avanzati</a></li>
<li class="sub"><a href="#cerca-salvate">Ricerche Salvate</a></li>
<li><a href="#galleria">Tab Gallery</a></li>
<li class="sub"><a href="#gall-badge">Badge e Indicatori</a></li>
<li class="sub"><a href="#gall-ordinamento">Ordinamento</a></li>
<li class="sub"><a href="#gall-menu">Menu Contestuale</a></li>
<li><a href="#statistiche">Tab Statistiche</a></li>
<li><a href="#esportazione">Tab Export</a></li>
<li class="sub"><a href="#export-xmp">Export XMP</a></li>
<li class="sub"><a href="#export-copia">Copia con Struttura</a></li>
<li><a href="#configurazione">Tab Configurazione</a></li>
<li class="sub"><a href="#config-device">Allocazione Device</a></li>
<li><a href="#plugin-llm">Plugin</a></li>
<li class="sub"><a href="#plugin-llm-backends">Plugin LLM</a></li>
<li class="sub"><a href="#plugin-dati">Plugin Dati</a></li>
<li class="sub"><a href="#plugin-contesto-prompt">Contesto Prompt</a></li>
<li class="sub"><a href="#plugin-accesso">Installazione plugin</a></li>
<li><a href="#log">Tab Log</a></li>
<li class="section-title"><a>Concetti Avanzati</a></li>
<li><a href="#bioclip">BioCLIP e Tassonomia</a></li>
<li><a href="#geotag">Geotag Offline</a></li>
<li><a href="#sync-state">Sync State XMP</a></li>
<li><a href="#multilingua">Supporto Multilingua</a></li>
<li class="section-title"><a>Supporto</a></li>
<li><a href="#faq">FAQ</a></li>
<li><a href="#troubleshooting">Troubleshooting</a></li>
<li><a href="#disinstallazione">Disinstallazione</a></li>
<li><a href="#reinstallazione">Reinstallazione</a></li>
</ul>
</nav>
<!-- ===== CONTENT ===== -->
<div class="content">
<!-- COVER -->
<div class="cover">
<img class="logo" src="../assets/logo3.jpg" alt="OffGallery Logo">
<h1>OffGallery</h1>
<div class="subtitle">Manuale Utente</div>
<div class="meta">Versione 1.0 · Aprile 2026 · Italiano</div>
</div>
<!-- ===== 1. INTRODUZIONE ===== -->
<h1 id="intro"><span class="section-number">1</span>Cos'è OffGallery</h1>
<p>OffGallery è un sistema di catalogazione e ricerca fotografica completamente <strong>offline</strong>. Analizza automaticamente ogni immagine con modelli AI locali, generando embedding semantici, tassonomia biologica, tag, descrizioni e score estetici — tutto senza inviare un singolo pixel a servizi cloud.</p>
<p>È progettato per fotografi che gestiscono archivi di migliaia di file RAW e vogliono trovare qualsiasi foto in secondi usando linguaggio naturale: "ritratto controluce al tramonto", "airone cenerino in volo", "paesaggio con neve e montagne".</p>
<h3>Cosa può fare OffGallery</h3>
<ul>
<li>Analizza <strong>25+ formati RAW</strong> (Canon CR2/CR3, Nikon NEF, Sony ARW, Fuji RAF e altri) e formati standard (JPG, PNG, TIFF, WEBP, HEIC)</li>
<li>Genera <strong>embedding semantici SigLIP</strong> (1152 dimensioni) per ricerca in linguaggio naturale multilingua</li>
<li>Calcola <strong>embedding DINOv2</strong> per ricerca per similarità visiva</li>
<li>Classifica automaticamente flora e fauna con <strong>BioCLIP2</strong> (~450.000 specie, 7 livelli tassonomici)</li>
<li>Genera <strong>tag, descrizioni e titoli</strong> tramite modello LLM Vision locale (es. Qwen3-VL via Ollama o LM Studio)</li>
<li>Valuta la qualità artistica con <strong>score estetico</strong> (0–10) e tecnica (nitidezza/rumore)</li>
<li>Geocodifica offline le <strong>coordinate GPS</strong> in gerarchia Continente › Paese › Regione › Città</li>
<li>Si integra con <strong>Lightroom</strong> tramite import/export XMP bidirezionale</li>
<li>Processa direttamente cataloghi <strong>.lrcat</strong> di Lightroom come sorgente di input</li>
</ul>
<div class="callout note">
<span class="icon">🔒</span>
<div class="body">
<strong>Privacy garantita</strong>
<p>Nessun dato, immagine o metadato lascia mai il tuo computer. Tutti i modelli AI girano localmente. La connessione internet è richiesta solo al primo avvio per scaricare i modelli (~6,7 GB).</p>
</div>
</div>
<!-- ===== PRIMO AVVIO ===== -->
<h1 id="primo-avvio"><span class="section-number">2</span>Primo Avvio</h1>
<p><strong>Windows</strong>: dopo aver eseguito <code>OffGallerySetup.exe</code>, avvia OffGallery tramite il collegamento creato sul Desktop. <strong>Linux/macOS</strong>: usa il launcher corrispondente (vedi <code>installer/INSTALL_GUIDE_IT.md</code>). Al <strong>primo avvio</strong> l'applicazione scarica automaticamente i modelli AI (~6,7 GB totali). Un pannello di progresso mostra l'avanzamento. Questo passaggio avviene una volta sola.</p>
<ol class="steps">
<li><p><strong>Windows</strong>: fai doppio click sul collegamento <strong>OffGallery</strong> sul Desktop, creato da <code>OffGallerySetup.exe</code>. <strong>Linux/macOS</strong>: usa il launcher nella cartella <code>installer/</code>.</p></li>
<li><p>Al primo avvio appare una splash screen che scarica i modelli AI. Connessione internet necessaria solo in questo momento.</p></li>
<li><p>Al termine del download l'interfaccia principale appare con 8 tab.</p></li>
<li><p>(Opzionale) Assicurati che <strong>Ollama</strong> sia in esecuzione se vuoi generare tag e descrizioni LLM. Su Windows avvia l'app Ollama; su macOS/Linux il daemon parte automaticamente.</p></li>
</ol>
<div class="callout tip">
<span class="icon">💡</span>
<div class="body">
<strong>Avvii successivi</strong>
<p>Dal secondo avvio in poi OffGallery è completamente offline. Non serve alcuna connessione internet.</p>
</div>
</div>
<!-- ===== INTERFACCIA ===== -->
<h1 id="interfaccia"><span class="section-number">3</span>Panoramica Interfaccia</h1>
<p>L'interfaccia è organizzata in <strong>8 tab</strong> orizzontali nella parte superiore della finestra:</p>
<table>
<thead><tr><th>Tab</th><th>Funzione Principale</th></tr></thead>
<tbody>
<tr><td><strong>Configurazione</strong></td><td>Impostazioni modelli AI, LLM, lingua UI e output, editor esterni</td></tr>
<tr><td><strong>Processing</strong></td><td>Analisi AI delle immagini: embedding, BioCLIP, LLM, score estetico/tecnico, geotag</td></tr>
<tr><td><strong>Ricerca</strong></td><td>Query semantica in linguaggio naturale + filtri EXIF/score/data/colore</td></tr>
<tr><td><strong>Gallery</strong></td><td>Visualizzazione risultati con badge, anteprima e ordinamento avanzato</td></tr>
<tr><td><strong>Export</strong></td><td>Export XMP, copia file con struttura originale, sync con Lightroom</td></tr>
<tr><td><strong>Statistiche</strong></td><td>Analisi del database: tipologia, date, obiettivi, score, rating</td></tr>
<tr><td><strong>Log</strong></td><td>Monitoraggio in tempo reale dei processi di elaborazione</td></tr>
<tr><td><strong>Plugin</strong></td><td>Gestione plugin standalone: avvio, configurazione e monitoraggio progresso</td></tr>
</tbody>
</table>
<h2 id="stato-modelli">3.1 Indicatori di Stato Modelli</h2>
<p>Nell'angolo in alto a destra della finestra principale è presente una barra fissa con <strong>indicatori colorati</strong> per ogni componente AI. A colpo d'occhio puoi verificare cosa è attivo senza entrare in Configurazione.</p>
<table>
<thead><tr><th>Colore</th><th>Significato</th></tr></thead>
<tbody>
<tr><td><span style="color:#4CAF50;font-weight:bold;">● Verde</span></td><td>Componente caricato in <strong>VRAM</strong> (GPU) — prestazioni ottimali</td></tr>
<tr><td><span style="color:#C88B2E;font-weight:bold;">● Ambra</span></td><td>Componente caricato su <strong>CPU</strong> — funzionante, ottimale per modelli leggeri (DINOv2, MUSIQ) o come fallback per modelli pesanti se la VRAM è insufficiente</td></tr>
<tr><td><span style="color:#E74C3C;font-weight:bold;">● Rosso</span></td><td>Componente <strong>abilitato ma non caricato</strong> — errore di caricamento (es. modello non trovato, VRAM esaurita senza fallback)</td></tr>
<tr><td><span style="color:#606060;font-weight:bold;">● Grigio</span></td><td>Componente <strong>disabilitato</strong> nella configurazione</td></tr>
</tbody>
</table>
<p>I componenti monitorati sono: <strong>CLIP</strong>, <strong>DINOv2</strong>, <strong>BioCLIP</strong>, <strong>Aesthetic</strong>, <strong>Technical</strong> (MUSIQ), <strong>LLM Vision</strong>, <strong>ExifTool</strong> e <strong>Database</strong>.</p>
<p><strong>Nota:</strong> Il colore dell'indicatore riflette il device configurato per ogni modello. Con l'allocazione per-modello (vedi <a href="#config-device">sezione Device</a>), alcuni modelli possono essere intenzionalmente su CPU (ambra) per sfruttare il parallelismo dei thread. BioCLIP ha un fallback automatico su CPU se la VRAM è insufficiente.</p>
<p>L'indicatore <strong>LLM</strong> mostra il nome del backend rilevato (Ollama o LM Studio) e si aggiorna automaticamente ogni 30 secondi. Con il backend impostato su <code>auto</code> (default), OffGallery rileva automaticamente quale server è attivo senza configurazione manuale.</p>
<hr>
<!-- ===== TAB ELABORAZIONE ===== -->
<h1 id="elaborazione"><span class="section-number">4</span>Tab Processing</h1>
<div class="screenshot-wrap">
<img src="../assets/Processing.png" alt="Tab Processing OffGallery">
<figcaption>Il tab Processing con selezione sorgente, opzioni AI e avvio elaborazione</figcaption>
</div>
<p>Il tab Processing è il centro operativo di OffGallery. Da qui si avviano le sessioni di analisi AI che popolano il database con embedding, tag, descrizioni e metadati.</p>
<h2 id="elab-sorgente">4.1 Sorgente Immagini</h2>
<p>Nella parte superiore del tab è possibile scegliere <strong>due tipi di sorgente</strong>:</p>
<h3>Sorgente: Directory</h3>
<p>Comportamento predefinito. OffGallery scansiona la cartella selezionata (e le sue sottocartelle) cercando tutti i formati supportati. Usa il pulsante <strong>Sfoglia</strong> per selezionare la directory, oppure inserisci il percorso manualmente.</p>
<div class="callout tip">
<span class="icon">💡</span>
<div class="body">
<strong>Cartella INPUT predefinita</strong>
<p>La cartella <code>INPUT/</code> nella root di OffGallery è la destinazione predefinita. Copia qui le nuove foto da elaborare.</p>
</div>
</div>
<h3>Sorgente: Catalogo Lightroom (.lrcat)</h3>
<p>Seleziona direttamente un file <code>.lrcat</code> di Lightroom. OffGallery legge il catalogo in <strong>sola lettura</strong> tramite SQLite: estrae la lista completa dei file indicizzati (con percorso assoluto) e li usa come sorgente senza toccare il catalogo originale.</p>
<p>Questo approccio è ideale per:</p>
<ul>
<li>Elaborare l'intera libreria Lightroom esistente senza spostare file</li>
<li>Mantenere la struttura di cartelle originale multi-disco</li>
<li>Combinare il catalogo Lightroom con i tag/descrizioni generati da OffGallery</li>
</ul>
<div class="callout warning">
<span class="icon">⚠️</span>
<div class="body">
<strong>Catalogo in uso</strong>
<p>Se Lightroom è aperto con il catalogo selezionato, OffGallery può comunque leggerlo (accesso in sola lettura). Il catalogo non viene mai modificato.</p>
</div>
</div>
<h2 id="elab-modalita">4.2 Modalità di Elaborazione</h2>
<p>Tre modalità selezionabili tramite radio button:</p>
<table>
<thead><tr><th>Modalità</th><th>Comportamento</th></tr></thead>
<tbody>
<tr>
<td><strong>Solo nuove immagini</strong></td>
<td>Elabora solo le immagini non ancora presenti nel database. Le foto già analizzate vengono saltate.</td>
</tr>
<tr>
<td><strong>Nuove + errori precedenti</strong></td>
<td>Elabora le immagini nuove e riprova quelle che avevano dato errore in una sessione precedente.</td>
</tr>
<tr>
<td><strong>Completa / Riprocessa tutte</strong></td>
<td>Elabora tutte le foto (nuove e catalogate). Con <strong>Sovrascrivi OFF</strong>: aggiunge solo i dati mancanti — ideale per completare un import interrotto o per applicare un modello che non era attivo la volta precedente. Con <strong>Sovrascrivi ON</strong>: ricalcola tutto da capo. Attivando questa modalità appare il checkbox <strong>Solo Gen. AI</strong>: vedi <a href="#solo-gen-ai">§ 4.4</a>.</td>
</tr>
</tbody>
</table>
<h2 id="elab-ai">4.3 Opzioni AI (Generazione LLM)</h2>
<p>Il riquadro <strong>Generazione AI</strong> controlla il comportamento del modello LLM Vision:</p>
<table>
<thead><tr><th>Opzione</th><th>Descrizione</th></tr></thead>
<tbody>
<tr><td><strong>Genera Tag</strong></td><td>Attiva la generazione di parole chiave descrittive dell'immagine</td></tr>
<tr><td><strong>Genera Descrizione</strong></td><td>Attiva la generazione di una descrizione narrativa</td></tr>
<tr><td><strong>Genera Titolo</strong></td><td>Attiva la generazione di un titolo breve</td></tr>
<tr><td><strong>Max tag</strong></td><td>Numero massimo di tag da generare (default: 10). È questo il valore che determina quanti tag descrittivi vengono scritti: non va confuso con <em>Ipotesi di specie da valutare</em> nel riquadro BioCLIP della Configurazione, che è un parametro indipendente (vedi nota sotto)</td></tr>
<tr><td><strong>Sovrascrivi</strong></td><td>Se selezionato, sovrascrive tag/descrizione/titolo esistenti. Se non selezionato: per i tag fa merge (aggiunge solo i nuovi); per descrizione e titolo salta se già presenti.</td></tr>
</tbody>
</table>
<p><strong>Nota — «Max tag» e BioCLIP sono due cose diverse.</strong> Nella scheda Configurazione, il riquadro BioCLIP contiene un campo <em>Ipotesi di specie da valutare</em> (in precedenza chiamato «Max Tag per Immagine», nome che generava confusione). Quel numero <strong>non</strong> stabilisce quanti tag vengono prodotti: indica quante specie candidate BioCLIP considera prima di scegliere la più probabile. Nei tag finisce comunque un solo nome scientifico. I due valori non sono in conflitto e non è necessario allinearli: se in Elaborazione si impostano 20 tag, non serve portare a 20 anche il parametro BioCLIP. Il valore consigliato per BioCLIP resta 5.</p>
<h3>Griglia: effetto di Sovrascrivi per tipo di campo</h3>
<table>
<thead>
<tr>
<th>Campo</th>
<th>Sovrascrivi OFF (default)</th>
<th>Sovrascrivi ON</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Tag</strong></td>
<td>Merge: aggiunge solo i tag non già presenti (case-insensitive). I tag esistenti restano invariati.</td>
<td>Replace totale: i tag esistenti vengono sostituiti integralmente con quelli generati dal LLM.</td>
</tr>
<tr>
<td><strong>Descrizione</strong></td>
<td>Skip: se la descrizione è già presente nel DB, il LLM non viene chiamato per questo campo.</td>
<td>Genera sempre: sovrascrive la descrizione esistente con quella generata dal LLM.</td>
</tr>
<tr>
<td><strong>Titolo</strong></td>
<td>Skip: se il titolo è già presente nel DB, il LLM non viene chiamato per questo campo.</td>
<td>Genera sempre: sovrascrive il titolo esistente con quello generato dal LLM.</td>
</tr>
<tr>
<td><strong>Embedding SigLIP/DINOv2</strong></td>
<td>Salta le foto che lo hanno già nel DB.</td>
<td>Ricalcola anche se già presente.</td>
</tr>
<tr>
<td><strong>BioCLIP tassonomia</strong></td>
<td>Salta le foto che la hanno già nel DB.</td>
<td>Ricalcola anche se già presente.</td>
</tr>
<tr>
<td><strong>Score estetico / tecnico</strong></td>
<td>Salta le foto che li hanno già nel DB.</td>
<td>Ricalcola anche se già presente.</td>
</tr>
</tbody>
</table>
<div class="callout note">
<span class="icon">ℹ️</span>
<div class="body">
<strong>Merge intelligente dei tag</strong>
<p>Con "Sovrascrivi" disattivato, il merge è <em>case-insensitive</em>: se il database contiene già "Uccello" e il LLM genera "uccello", il tag non viene duplicato.</p>
</div>
</div>
<h3>Griglia combinata: Modalità × Sovrascrivi</h3>
<table>
<thead>
<tr>
<th>Modalità</th>
<th>Sovrascrivi</th>
<th>Tag</th>
<th>Descrizione</th>
<th>Titolo</th>
<th>Embedding / BioCLIP / Score</th>
</tr>
</thead>
<tbody>
<tr>
<td rowspan="2"><strong>Solo nuove immagini</strong></td>
<td>OFF</td>
<td>Merge (solo nuovi tag)</td>
<td>Skip se presente</td>
<td>Skip se presente</td>
<td rowspan="2">Solo per immagini nuove</td>
</tr>
<tr>
<td>ON</td>
<td>Replace totale</td>
<td>Genera sempre</td>
<td>Genera sempre</td>
</tr>
<tr>
<td rowspan="2"><strong>Nuove + errori precedenti</strong></td>
<td>OFF</td>
<td>Merge (solo nuovi tag)</td>
<td>Skip se presente</td>
<td>Skip se presente</td>
<td rowspan="2">Solo per immagini nuove o con errori</td>
</tr>
<tr>
<td>ON</td>
<td>Replace totale</td>
<td>Genera sempre</td>
<td>Genera sempre</td>
</tr>
<tr>
<td rowspan="2"><strong>Completa / Riprocessa tutte</strong></td>
<td>OFF</td>
<td>Merge (solo nuovi tag)</td>
<td>Skip se presente</td>
<td>Skip se presente</td>
<td>Solo se mancanti nel DB</td>
</tr>
<tr>
<td>ON</td>
<td>Replace totale</td>
<td>Genera sempre</td>
<td>Genera sempre</td>
<td>Sempre rigenerati</td>
</tr>
<tr>
<td><strong>Completa / Riprocessa tutte + Solo Gen. AI</strong></td>
<td>OFF / ON</td>
<td>Merge / Replace</td>
<td>Skip / Genera</td>
<td>Skip / Genera</td>
<td>Non toccati (EXIF, embedding, BioCLIP, score saltati)</td>
</tr>
</tbody>
</table>
<h2 id="solo-gen-ai">4.4 Modalità "Solo Gen. AI"</h2>
<p>Il checkbox <strong>Solo Gen. AI</strong> appare accanto a "Riprocessa tutte" quando questa modalità è selezionata. Spuntandolo si attiva una modalità speciale che agisce solo sulla generazione LLM.</p>
<p>Questa modalità è pensata per un caso d'uso molto frequente: <em>hai già analizzato le foto ma vuoi aggiornare tag, descrizioni e titoli con un modello LLM migliore, senza dover rieseguire tutta la pipeline (EXIF, embedding CLIP/DINOv2, BioCLIP, aesthetic score, ecc.)</em>.</p>
<h3>Cosa fa "Solo Gen. AI"</h3>
<ul>
<li><strong>Filtra</strong> solo le immagini già presenti nel database (le nuove foto vengono ignorate)</li>
<li><strong>Estrae</strong> una miniatura a 512px dall'originale per il modello LLM</li>
<li><strong>Chiama</strong> il modello LLM Vision con il prompt configurato</li>
<li><strong>Aggiorna</strong> nel database solo i campi: <code>tags</code>, <code>description</code>, <code>title</code></li>
<li><strong>Salta</strong> completamente: EXIF, embedding CLIP/DINOv2, BioCLIP, score estetico/tecnico, geotag</li>
</ul>
<h3>Cosa <em>non</em> fa "Solo Gen. AI"</h3>
<ul>
<li>Non tocca il campo <code>bioclip_taxonomy</code> (rimane invariato)</li>
<li>Non aggiorna embedding (le ricerche semantiche precedenti rimangono valide)</li>
<li>Non elabora foto nuove non ancora nel database</li>
</ul>
<h3>Quando usarla</h3>
<ol>
<li>Hai aggiornato Ollama a un modello più capace (es. da 4B a 7B)</li>
<li>Vuoi rigenerare i tag in una lingua diversa</li>
<li>I tag generati con il modello precedente erano insoddisfacenti</li>
<li>Vuoi aggiungere descrizioni a foto già importate senza descrizione</li>
</ol>
<div class="callout warning">
<span class="icon">⚠️</span>
<div class="body">
<strong>Prerequisito</strong>
<p>Seleziona almeno uno fra "Genera Tag", "Genera Descrizione" o "Genera Titolo" prima di avviare in modalità Solo Gen. AI. Altrimenti OffGallery mostra un avviso.</p>
</div>
</div>
<h2 id="elab-avvio">4.5 Avvio e Monitoraggio</h2>
<p>Premi il pulsante <strong>Avvia</strong> per iniziare l'elaborazione. Durante l'analisi:</p>
<ul>
<li>Una <strong>barra di progresso</strong> mostra l'avanzamento (file corrente / totale)</li>
<li>Il <strong>pannello Log</strong> (tab Log) mostra in tempo reale ogni operazione</li>
<li>Il pulsante cambia in <strong>Interrompi</strong> per fermare l'elaborazione in modo sicuro</li>
</ul>
<p>Le elaborazioni complete e quelle interrotte dall'utente sono sicure: il database viene aggiornato dopo ogni immagine completata.</p>
<div class="callout tip">
<span class="icon">💡</span>
<div class="body">
<strong>Elaborazione in background</strong>
<p>Puoi passare ad altri tab (Ricerca, Gallery) mentre l'elaborazione è in corso. Il processo continua in background.</p>
</div>
</div>
<hr>
<!-- ===== TAB RICERCA ===== -->
<h1 id="ricerca"><span class="section-number">5</span>Tab Ricerca</h1>
<div class="screenshot-wrap">
<img src="../assets/Search.png" alt="Pannello di ricerca OffGallery">
<figcaption>Il pannello di ricerca con filtri semantici, EXIF e score</figcaption>
</div>
<p>Il tab Ricerca è il cuore della discovery fotografica. Combina <strong>ricerca semantica</strong> (linguaggio naturale) con filtri avanzati su metadati, score e date.</p>
<h2 id="cerca-semantica">5.1 Ricerca Semantica (SigLIP)</h2>
<p>La ricerca semantica usa embedding SigLIP per trovare immagini il cui contenuto visivo è simile al concetto espresso nella query, indipendentemente dalle parole usate.</p>
<ol class="steps">
<li><p>Digita la query nel campo di testo principale: es. <em>"tramonto sul mare con barche"</em>. SigLIP è multilingua: puoi scrivere in italiano, inglese o altra lingua senza necessità di traduzione.</p></li>
<li><p>OffGallery codifica la query direttamente con il modello SigLIP (google/siglip-so400m-patch14-384).</p></li>
<li><p>I risultati vengono ordinati per <strong>similarità coseno</strong> con tutti gli embedding nel database.</p></li>
<li><p>Regola il cursore <strong>Soglia</strong> per filtrare risultati poco pertinenti (default ~0.20).</p></li>
</ol>
<div class="callout tip">
<span class="icon">💡</span>
<div class="body">
<strong>Query descrittive funzionano meglio</strong>
<p>Scrivi query descrittive del contenuto: "uccello in volo su sfondo cielo blu" funziona meglio di "airone" (troppo generico). Puoi includere colori, atmosfera, composizione.</p>
</div>
</div>
<h2 id="cerca-tag">5.2 Ricerca per Tag</h2>
<p>La ricerca per tag usa <strong>fuzzy matching</strong> per trovare immagini che contengono specifiche parole chiave. La ricerca è:</p>
<ul>
<li><strong>Case-insensitive</strong>: "Uccello" e "uccello" sono equivalenti</li>
<li><strong>Fuzzy</strong>: "flamingo" trova anche "fenicottero" se il modello ha usato entrambi</li>
<li><strong>Multilingua</strong>: funziona nella lingua in cui sono stati generati i tag</li>
</ul>
<p>Puoi combinare più tag separati da virgola per una ricerca AND.</p>
<h2 id="cerca-filtri">5.3 Filtri Avanzati</h2>
<p>I filtri si accumulano: attivarne più di uno restringe progressivamente i risultati.</p>
<table>
<thead><tr><th>Categoria</th><th>Filtri Disponibili</th></tr></thead>
<tbody>
<tr>
<td><strong>EXIF</strong></td>
<td>Camera (marca/modello), Obiettivo, Focale (mm), ISO, Tempo di posa, Diaframma (f/)</td>
</tr>
<tr>
<td><strong>Score</strong></td>
<td>Score estetico minimo (0–10), Score tecnico minimo (0–10)</td>
</tr>
<tr>
<td><strong>Rating</strong></td>
<td>Stelle Lightroom: da 0 a 5 (compatibile con import/export XMP)</td>
</tr>
<tr>
<td><strong>Colore</strong></td>
<td>Etichetta colore (rosso, giallo, verde, blu, viola) o Bianco/Nero rilevato automaticamente</td>
</tr>
<tr>
<td><strong>Data</strong></td>
<td>Intervallo date scatto (da → a)</td>
</tr>
<tr>
<td><strong>Formato</strong></td>
<td>Solo RAW, Solo JPEG, o tutti</td>
</tr>
<tr>
<td><strong>Luogo</strong></td>
<td>Città o regione con autocompletamento dai valori presenti nel DB (plugin GeoNames). Ricerca per contenuto, case-insensitive.</td>
</tr>
<tr>
<td><strong>GPS</strong></td>
<td>4 stati: Tutte · Solo con GPS · GPS modificato manualmente · Senza GPS (plugin GeoNames)</td>
</tr>
<tr>
<td><strong>Nome comune</strong></td>
<td>Filtra per nome comune biologico con autocompletamento (plugin BioNomen). Ricerca per contenuto sul campo.</td>
</tr>
<tr>
<td><strong>Habitat</strong></td>
<td>Tipo di habitat ESA WorldCover (bosco, macchia, prato, urbano, acqua…) — plugin NaturArea</td>
</tr>
<tr>
<td><strong>Area protetta</strong></td>
<td>Testo libero sul nome dell'area protetta WDPA — plugin NaturArea</td>
</tr>
<tr>
<td><strong>Condizione meteo</strong></td>
<td>Sereno · Parzialmente nuvoloso · Nuvoloso · Nebbia · Pioggerella · Pioggia · Neve · Temporale — plugin Meteo</td>
</tr>
</tbody>
</table>
<div class="callout note">
<span class="icon">ℹ️</span>
<div class="body">
<strong>Filtri plugin</strong>
<p>I filtri Luogo, GPS, Nome comune, Habitat, Area protetta e Condizione meteo sono visibili solo se il plugin corrispondente è installato e ha già elaborato almeno una foto. Se il plugin non è presente, la riga non appare nell'interfaccia.</p>
</div>
</div>
<h2 id="cerca-salvate">5.4 Ricerche Salvate</h2>
<p>Puoi salvare la configurazione completa di una ricerca (query + tutti i filtri attivi) con un nome personalizzato. Le ricerche salvate sono richiamabili in un click dal menu a tendina.</p>
<ol class="steps">
<li><p>Configura la ricerca desiderata (query, soglia, filtri).</p></li>
<li><p>Clicca <strong>Salva ricerca</strong> e assegna un nome.</p></li>
<li><p>Per richiamarla in futuro: selezionala dal menu a tendina "Ricerche salvate" e premi <strong>Carica</strong>.</p></li>
</ol>
<p>Le ricerche vengono salvate in <code>database/saved_searches.json</code>.</p>
<hr>
<!-- ===== TAB GALLERIA ===== -->
<h1 id="galleria"><span class="section-number">6</span>Tab Gallery</h1>
<div class="screenshot-wrap">
<img src="../assets/Gallery.png" alt="Galleria OffGallery">
<figcaption>La galleria mostra i risultati con badge, anteprime e dettagli al hover</figcaption>
</div>
<p>La Galleria visualizza i risultati della ricerca corrente. Ogni immagine è mostrata come miniatura con <strong>badge informativi</strong> sovrapposti.</p>
<h2 id="gall-badge">6.1 Badge e Indicatori</h2>
<table>
<thead><tr><th>Badge</th><th>Significato</th></tr></thead>
<tbody>
<tr><td><span class="badge blue">★ 4.2</span></td><td>Score estetico (0–10). Colore: verde >7, giallo 5–7, grigio <5</td></tr>
<tr><td><span class="badge green">⚙ 8.1</span></td><td>Score tecnico (nitidezza/rumore, solo immagini non-RAW)</td></tr>
<tr><td><span class="badge orange">★★★★</span></td><td>Rating Lightroom (stelle 1–5)</td></tr>
<tr><td><span class="badge purple">B/N</span></td><td>Immagine in bianco e nero rilevata automaticamente</td></tr>
<tr><td><span class="badge red">●</span></td><td>Etichetta colore Lightroom (rosso/giallo/verde/blu/viola)</td></tr>
</tbody>
</table>
<h3>Tooltip al passaggio del mouse</h3>
<p>Passando il mouse su una miniatura appare un tooltip con:</p>
<ul>
<li>Titolo e descrizione generati dal LLM</li>
<li>Lista completa dei tag</li>
<li>Tassonomia BioCLIP (se rilevata): es. <em>Animalia › Aves › Ardeidae › Ardea cinerea</em></li>
<li>Gerarchia geografica: es. <em>GeOFF | Europe | Italy | Sardegna | Oristano</em></li>
<li>Metadati EXIF principali (camera, obiettivo, ISO, tempo)</li>
</ul>
<h2 id="gall-ordinamento">6.2 Ordinamento</h2>
<p>Il menu <strong>Ordina per</strong> offre 7 criteri:</p>
<ol>
<li>Rilevanza (score similarità CLIP — predefinito nelle ricerche semantiche)</li>
<li>Data scatto (crescente o decrescente)</li>
<li>Nome file</li>
<li>Rating (stelle)</li>
<li>Score estetico</li>
<li>Score tecnico</li>
<li>Score composito (estetico + tecnico)</li>
</ol>
<p>Per ogni criterio è possibile scegliere direzione <strong>ASC</strong> o <strong>DESC</strong>.</p>
<h2 id="gall-menu">6.3 Menu Contestuale</h2>
<p>Click destro su qualsiasi miniatura apre il menu contestuale con le azioni disponibili:</p>
<table>
<thead><tr><th>Azione</th><th>Descrizione</th></tr></thead>
<tbody>
<tr><td><strong>Apri in editor esterno</strong></td><td>Apre il file originale in Lightroom, Capture One, o altro editor configurato</td></tr>
<tr><td><strong>Mostra in Esplora Risorse</strong></td><td>Apre la cartella contenente il file originale</td></tr>
<tr><td><strong>Trova immagini simili</strong></td><td>Avvia una ricerca per similarità visiva (DINOv2) usando questa immagine come query. La <em>Soglia di similarità</em> stabilisce quanto due immagini debbano somigliarsi per essere considerate affini: valori bassi restituiscono molti risultati, anche poco pertinenti; valori alti ne restituiscono pochi ma più mirati. Valore consigliato: 0,30–0,40. Il valore predefinito si imposta in Configurazione → DINOv2 e non influisce su tag, descrizioni o elaborazione</td></tr>
<tr><td><strong>Modifica tag</strong></td><td>Apre un editor inline per aggiungere/rimuovere tag manualmente</td></tr>
<tr><td><strong>Rigenera AI</strong></td><td>Rigenera tag, descrizione e titolo per questa singola immagine</td></tr>
<tr><td><strong>Export XMP</strong></td><td>Esporta subito il file XMP per questa immagine</td></tr>
<tr><td><strong>GeoNames →</strong></td><td>Sottomenu plugin GeoNames: <em>Assegna posizione…</em> (apre dialog con ricerca per nome o coordinate dirette), <em>Ricalcola gerarchia GPS</em>, <em>Cancella dati GPS</em>. Visibile solo se il plugin è installato.</td></tr>
<tr><td><strong>Esegui NaturArea</strong></td><td>Rileva area protetta e habitat dalla posizione GPS (plugin NaturArea)</td></tr>
<tr><td><strong>Esegui Meteo</strong></td><td>Recupera le condizioni meteo storiche al momento dello scatto (plugin Meteo — richiede internet)</td></tr>
<tr><td><strong>Esegui BioNomen</strong></td><td>Aggiunge i nomi comuni biologici nella lingua configurata nel plugin — indipendente dalla lingua dei testi LLM (plugin BioNomen)</td></tr>
</tbody>
</table>
<div class="callout note">
<span class="icon">ℹ️</span>
<div class="body">
<strong>Azioni plugin nel menu contestuale</strong>
<p>Le voci relative ai plugin appaiono nel menu contestuale solo se il plugin corrispondente è installato. Le azioni si applicano all'immagine selezionata. Per elaborare più immagini in batch, usa il tab Processing.</p>
</div>
</div>
<hr>
<!-- ===== TAB STATISTICHE ===== -->
<h1 id="statistiche"><span class="section-number">7</span>Tab Statistiche</h1>
<div class="screenshot-wrap">
<img src="../assets/Stat.png" alt="Statistiche OffGallery">
<figcaption>Il pannello statistiche mostra analisi dettagliate del database fotografico</figcaption>
</div>
<p>Il tab Statistiche offre una panoramica analitica dell'intero archivio indicizzato:</p>
<ul>
<li><strong>Distribuzione formati</strong>: quante RAW, quante JPEG, PNG, ecc.</li>
<li><strong>Timeline scatti</strong>: distribuzione temporale per anno/mese</li>
<li><strong>Strumentazione</strong>: le fotocamere e gli obiettivi più usati</li>
<li><strong>Parametri di scatto</strong>: distribuzioni di ISO, tempo, diaframma</li>
<li><strong>Score estetici e tecnici</strong>: istogrammi e medie</li>
<li><strong>Rating</strong>: distribuzione stelle 0–5</li>
<li><strong>Tag cloud</strong>: le parole chiave più frequenti nell'archivio</li>
</ul>
<hr>
<!-- ===== TAB ESPORTAZIONE ===== -->
<h1 id="esportazione"><span class="section-number">8</span>Tab Export</h1>
<div class="screenshot-wrap">
<img src="../assets/Export.png" alt="Tab Export OffGallery">
<figcaption>Il tab Export con le opzioni XMP, CSV e file immagini</figcaption>
</div>
<p>Il tab Export è organizzato in tre sezioni distinte — <strong>Metadati XMP</strong>, <strong>Foglio dati CSV</strong> e <strong>File immagini</strong> — combinabili liberamente. In cima al riquadro trovi la barra dei <strong>Preset</strong> per salvare e richiamare configurazioni complete.</p>