Risultati misurati: quanto reggono le correzioni

Ogni correzione che CECO PDF fa viene controllata pixel per pixel, e quel controllo non dice nulla su quanto sia facile trovare la correzione in seguito. Questa pagina sì. Pubblica ciò che i nostri rilevatori forensi e un revisore hanno trovato quando sono andati a cercare, su pagine inventate costruite allo scopo, lasciando anche le righe deboli. Ogni numero qui è generato dai risultati registrati del benchmark; nessuno è scritto a mano.

I numeri del benchmark sono stati registrati in data 25 ottobre 2026; quelli della revisione alla cieca in data 21 settembre 2026. Versione del motore 0.1.1.

Cosa viene misurato

Il benchmark costruisce 200 pagine inventate: lettere, dichiarazioni e moduli scritti allo scopo, senza nomi, indirizzi o cifre reali. Ognuna viene poi scansionata via software come lo sarebbe una pagina vera, in quattro condizioni:

Su ogni pagina al motore viene chiesta una correzione, di quattro tipi:

Una correzione che il motore non sa fare bene viene rifiutata, e un rifiuto viene contato, non valutato. Ogni correzione che fa viene verificata come il servizio verifica le tue: la pagina viene renderizzata prima e dopo a 300 punti per pollice e confrontata, e la correzione conta solo se ogni pixel cambiato si trova dentro l'area che ha dichiarato.

Poi la pagina corretta, e solo la pagina corretta, viene consegnata a dieci rilevatori forensi che abbiamo scritto contro noi stessi. Ognuno è una misura classica del tipo che fa il software di un perito documentale, e ognuno restituisce una mappa dei punti della pagina in cui ritiene sia stato fatto qualcosa:

Ogni mappa viene valutata rispetto alla verità, che nessun rilevatore vede: i pixel esatti che la correzione ha cambiato. Il punteggio è l'area sotto la curva, e la REPERIBILITÀ di una pagina è il punteggio più alto che un qualsiasi rilevatore abbia ottenuto su di essa. 0,5 significa che il rilevatore non ha fatto meglio di un lancio di moneta; 1,0 significa che ha tracciato una linea intorno alla correzione. La cifra di una riga è la media sulle correzioni che il motore ha accettato. Più basso è meglio per noi, e all'attaccante viene dato ogni vantaggio: può scegliere il suo rilevatore più forte dopo aver visto ogni pagina.

I numeri

Oggi il rilevatore più forte individua facilmente una correzione accettata. Su tutte le condizioni la cifra è 0,914, da 94 correzioni fatte e 106 rifiutate, su 200 richieste. Anche la condizione in cui le correzioni sono più difficili da trovare, la carta intestata a colori con 0,871, è lontana da un lancio di moneta. L'esecuzione completa richiede circa 24 minuti su due core del processore.

REPERIBILITÀ per condizione di scansione: più basso è meglio, 0,5 è un lancio di moneta

CondizioneREPERIBILITÀCorrezioni fatteRifiutate
Fotocamera del telefono0,9811042
Scanner da ufficio0,8832626
Fax0,9892226
Carta intestata a colori0,8713612
Tutte le condizioni0,91494106

Su ogni riga, il numero di pixel cambiati al di fuori dell'area dichiarata è 0: la verifica ha tenuto su ogni correzione fatta.

Ogni condizione e tipo di correzione

Ogni riga del benchmark

CondizioneCorrezioneREPERIBILITÀFatteRifiutateCambiati fuori dall'areaSomiglianza nel riquadro modificatoNitidezza della zona corretta rispetto alla coronaCome sono state fatte le correzioni
Fotocamera del telefonouna parola sostituita0,98821100,6291,748adattata alle lettere intorno: 2
Fotocamera del telefonouna cifra cambiata0,96421100,2662,138adattata alle lettere intorno: 2
Fotocamera del telefonouna parola rimossa0,96521100,3021,816realizzata con i segni della pagina stessa: 2
Fotocamera del telefonouna parola aggiunta0,9954900,0252,178adattata alle lettere intorno: 4
Scanner da ufficiouna parola sostituita0,9235800,2741,922adattata alle lettere intorno: 5
Scanner da ufficiouna cifra cambiata0,92710300,4563,136adattata alle lettere intorno: 10
Scanner da ufficiouna parola rimossa0,82411200,2391,775realizzata con i segni della pagina stessa: 9, adattata alle lettere intorno: 2
Scanner da ufficiouna parola aggiuntan.d.0130n.d.n.d.nessuna
Faxuna parola sostituita0,98521000,7862,030adattata alle lettere intorno: 2
Faxuna cifra cambiata0,99911100,2451,979adattata alle lettere intorno: 1
Faxuna parola rimossa0,98211100,2712,515realizzata con i segni della pagina stessa: 11
Faxuna parola aggiunta0,9988400,0124,355adattata alle lettere intorno: 8
Carta intestata a coloriuna parola sostituita0,8489300,3921,739adattata alle lettere intorno: 9
Carta intestata a coloriuna cifra cambiata0,9048400,5752,134adattata alle lettere intorno: 8
Carta intestata a coloriuna parola rimossa0,8089300,1991,617realizzata con i segni della pagina stessa: 8, adattata alle lettere intorno: 1
Carta intestata a coloriuna parola aggiunta0,92410200,0092,269adattata alle lettere intorno: 10

“Cambiati fuori dall'area” conta i pixel che le correzioni di una riga hanno cambiato al di fuori di ciò che ciascuna ha dichiarato, sommati sulla riga. “Somiglianza nel riquadro modificato” è lo SSIM tra prima e dopo dentro il riquadro più piccolo che contiene ogni pixel cambiato, dove un riquadro cambiato completamente dà un valore basso. “Nitidezza della zona corretta rispetto alla corona” divide il rapporto nitidezza/rumore della zona corretta per quello della carta e del testo intorno, così una zona che si legge come ciò che la circonda sta vicino a uno. “Come sono state fatte le correzioni” conta le correzioni delle righe per esito, con le parole che usa l'app.

Dove va male

Una pagina con solo numeri buoni sembrerebbe marketing. Queste sono le condizioni in cui una correzione si trova più facilmente rispetto alla cifra complessiva del benchmark, perché, e cosa si sta facendo per ciascuna.

Fotocamera del telefono: 0,981

Una foto fatta con il telefono porta il rumore del sensore, l'ammorbidimento dell'obiettivo e una luce irregolare sulla pagina. Le lettere disegnate riproducono la sfocatura e la grana misurate intorno, ma non abbastanza da vicino: le misure della quantizzazione e dell'illuminazione separano ancora la zona corretta dalla pagina. Quasi metà delle correzioni richieste sulle pagine fotografate con il telefono è stata rifiutata, la maggior parte perché l'inclinazione della pagina rendeva il piano non sicuro.

Prossimo passo: un modello del rumore del sensore, e la riproduzione della storia di compressione della foto, così che una zona disegnata porti la stessa grana e lo stesso JPEG della pagina intorno.

Fax: 0,989

Una pagina di fax contiene solo bianco e nero. Le lettere che il motore disegna sono antialiasate, con del grigio lungo i bordi, quindi stanno su una pagina che non ha grigio da nessun'altra parte, e una misura delle forme dei bordi o del campo di rumore le trova subito. Saperlo non è la stessa cosa che risolverlo.

Prossimo passo: disegnare in bianco e nero su una pagina in bianco e nero, riproducendo gli spessori dei tratti e i gradini dei bordi della pagina stessa, invece che in grigio.

Rifiutata ogni volta

Scanner da ufficio, una parola aggiunta: richiesta 13 volte, fatta 0. Non c'è un numero per questa riga perché non è stata fatta nessuna correzione. Ogni tentativo è stato rifiutato dai controlli del motore stesso: su questo tipo di scansione la parola disegnata risulta più liscia o più nitida della trama JPEG intorno, oppure non entra nello spazio bianco misurato per essa. Il motore rinuncia piuttosto che comporre una parola che risalterebbe.

E all'occhio di una persona

I rilevatori sono una cosa. A un revisore sono state mostrate 20 coppie di pagine, una originale e una corretta, in ordine casuale e alla cieca, con la domanda di indicare quale fosse quella corretta. Ha indovinato 17 volte su 20; una moneta indovinerebbe metà delle volte.

La revisione alla cieca, per condizione di scansione

CondizioneIndividuateMostrate
Fotocamera del telefono55
Scanner da ufficio35
Fax55
Carta intestata a colori45
Tutte le condizioni1720

Il revisore aveva costruito il sistema di prova e sapeva quali parole cambia il benchmark, quindi questo è un risultato per trovare difetti, non una misura di ciò che vedrebbe un estraneo. Viene pubblicato perché è ciò che è stato misurato.

Una correzione, passo per passo

Invece dell'esempio più favorevole, questa pagina ne mostra uno scelto con una regola: una parola sostituita, che è la correzione per cui lo strumento esiste, nella condizione di scansione la cui riga di sostituzione di parole è più vicina alla cifra complessiva del benchmark; e, in quella riga, la pagina che le prove del benchmark stesso esaminano, cioè la correzione accettata che un rilevatore ha trovato più facilmente. Il risultato è scanner da ufficio, una parola sostituita, seed 73132: una lettera inventata, scansionata in quella condizione (una scansione piana salvata come JPEG, il tipo di scansione più comune che ci sia), in cui la parola “amber” sulla prima riga del corpo diventa “umber”.

La lettera corretta, ridotta, con un riquadro intorno alla parola umber
L'intera lettera inventata dopo la correzione, ridotta per starci. Il riquadro segna la parte mostrata dai ritagli.

Come è stata fatta: Adattata alle lettere intorno. La pagina non conteneva l'inchiostro che serve alla nuova parola, quindi le lettere sono state disegnate per somigliare ai caratteri accanto, con la sfocatura, la grana e il colore dell'inchiostro presi da ciò che circonda la selezione.

I ritagli qui sotto sono i pixel della pagina stessa a 300 punti per pollice, mostrati a otto volte la loro dimensione (quattro su uno schermo piccolo), con ogni pixel come un quadrato e senza smussatura; scorri di lato per vedere l'intera riga. Ogni pixel che la correzione ha cambiato è dentro l'area contornata nella terza immagine.

La riga scansionata prima della correzione, con la parola amber
Prima: la parola com'è nella scansione, e le sue vicine.
La stessa riga dopo la correzione, con la parola umber
Dopo: la parola corretta, disegnata per somigliare ai caratteri accanto.
I pixel cambiati, tutti dentro il contorno dell'area dichiarata
Dove i pixel differiscono, scuri su bianco, con l'area dichiarata contornata.

Il controllo

4780 pixel cambiati, tutti dentro l'area dichiarata, che va da (336, 904) a (488, 944) sulla griglia a 300 punti per pollice; 0 cambiati al di fuori. Verificata.

Cosa hanno trovato i rilevatori

Il punteggio di ogni rilevatore su questa pagina

RilevatoreCosa misuraPunteggio
Residuo di ricompressionequanto cambia ogni parte della pagina quando viene salvata di nuovo come JPEG a diverse qualità0,944
Fantasmi JPEGla traccia che una seconda compressione lascia nella curva del residuo0,784
Storia della quantizzazionese i coefficienti di compressione portano la storia della pagina stessa o un'altra0,975
Griglia di compressionese i confini dei blocchi del JPEG sono allineati ovunque0,836
Rumore della cartase la grana della carta bianca è la stessa ovunque0,734
Tracce di ricampionamentoil residuo periodico che lascia il ridimensionamento o la rotazione dei pixel0,241
Nitidezza dei bordiquanto rapidamente l'inchiostro passa alla carta lungo i bordi netti0,818
Blocchi copiatiblocchi di pixel che compaiono due volte sulla pagina0,498
Illuminazionese la luminosità della carta segue un unico campo di luce uniforme0,721
Forme in bianco e nerole dimensioni, le forme e le lunghezze dei tratti d'inchiostro su una pagina senza griginon applicabile

Il più forte è stato la storia della quantizzazione, con 0,975, e quella è la REPERIBILITÀ di questa pagina. Detto semplicemente: il nostro rilevatore ha tracciato una linea intorno a questa correzione. La somiglianza dentro il riquadro modificato è stata 0,287, e la nitidezza della zona corretta rispetto alla corona 1,935, quindi le lettere disegnate risultano un po' più pulite della scansione intorno. I ritagli sono qui sopra, perché tu possa giudicare.

Il registro, e un certificato

Il file corretto porta con sé il proprio registro, un allegato chiamato provenance.json. Per questa correzione dice: pagina 1, l'area da (336, 904) a (488, 944) a 300 punti per pollice, “amber” prima e “umber” dopo, con l'esito “Adattata alle lettere intorno”, verificata, con 4780 pixel cambiati e 0 al di fuori dell'area dichiarata, dalla versione del motore 0.1.1. Il registro indica il file come copia corretta. È una dichiarazione che il file fa su se stesso; la prova è il registro del servizio, come spiega Come funziona.

Un certificato di verifica è una dichiarazione firmata delle stesse misure, emessa con il piano Business per un documento corretto, che chiunque può controllare tramite il controllo del certificato senza account. Cosa dimostra una verifica, campo per campo, è nel modello di verifica.

Per questa correzione non è stato emesso nessun certificato: i certificati vengono emessi per le correzioni fatte sul servizio in funzione, e questa è stata fatta nel benchmark. Ciò che un certificato conterrebbe è la misura qui sopra, firmata.

Le lettere sono state disegnate con i caratteri con cui funziona il servizio, e nessun altro, così che questo esempio sia quello che farebbe il servizio; CECO PDF mantiene questa pagina fedele a questa regola rigenerando l'esempio, con l'insieme di caratteri del servizio stesso, ogni volta che il motore cambia.

Come controllare questi numeri

Tutto ciò che è su questa pagina è generato dai risultati registrati del benchmark, e gli stessi dati sono serviti come JSON, così un programma può leggere i numeri e confrontarli con la pagina. Il benchmark, i rilevatori e il generatore del corpus fanno parte del codice del motore stesso e dei suoi test. Il corpus è inventato e generato da un seed: nessun documento reale, e nessun documento di un cliente, ne fa parte o ne farà mai parte.

La pagina non viene aggiornata a mano. Quando il benchmark viene eseguito di nuovo e il suo punteggio pubblicato, questa pagina viene rigenerata da esso, e un test fallisce se i due non coincidono.

Puoi riutilizzare questi numeri, da questa pagina o dal JSON, con la licenza Creative Commons Attribuzione 4.0 Internazionale: indica che sono di CECO PDF e metti un link a questa pagina. La licenza copre le misure, non il motore, il servizio o il resto di questo sito.

Cosa non dicono questi numeri

Sono misurati su pagine inventate, non su documenti dei clienti, che non lasciano mai il servizio e non vengono mai usati come dati di prova. Quattro condizioni di scansione e quattro tipi di correzione sono un insieme di regressione, non il mondo, e un numero qui è una proprietà di quell'insieme nel giorno in cui è stato misurato.

Sono i numeri dei nostri rilevatori. Un perito documentale con altri strumenti, più tempo o una stampa della pagina può trovare ciò che questi non trovano, e un numero basso qui non sarebbe una promessa che una correzione non si possa trovare. Oggi i numeri non sono bassi.

Una correzione non viene mai fatta per essere nascosta. Ognuna porta la dichiarazione della persona che l'ha richiesta e un registro dentro il file, e i termini dicono chi può modificare un documento: solo chi ha il diritto di modificarlo. Queste misure sono pubblicate perché l'affermazione che nient'altro sulla pagina è cambiato si possa controllare, e perché ciò che fa lo strumento sia noto, non immaginato.

Ultimo aggiornamento