Benvenuto

modifica
se non lo vedi, clicca qui!
Benvenuto su Wikisource!

Ciao TrameOscure, un saluto di benvenuto su Wikisource, la biblioteca libera!

Per iniziare la tua collaborazione, leggi come prima cosa cos'è Wikisource, la pagina delle linee guida ed i manuali contenuti nella sezione aiuto. Se hai domande, dubbi o curiosità non esitare a chiedere al Bar, a un amministratore o a qualsiasi utente vedessi collegato seguendo le ultime modifiche.

Buon lavoro e buon divertimento da tutti i wikisourciani.


Naturalmente benvenuto anche da parte mia e se avessi bisogno non esitare a contattarmi. —Paperoastro (disc.) 00:41, 26 nov 2024 (CET)Rispondi

Notice of expiration of your interface-admin right

modifica
Hi, as part of Global reminder bot, this is an automated reminder to let you know that your permission "interface-admin" (Amministratori dell'interfaccia) will expire on 2024-12-14 15:20:46. Please renew this right if you would like to continue using it. In other languages: click here Leaderbot (disc.) 20:45, 7 dic 2024 (CET)Rispondi

ehila

modifica

Goditi wikisource sono l'ip di wikipedia--93.33.99.191 00:36, 13 dic 2024 (CET)Rispondi

Non si capisce se sia una trollata patetica o un augurio sincero. A differenza di quanto è stato fatto con me su wiki, dove qualunque cosa io abbia scritto è stata letta con le deformanti lenti del preconcetto e del pregiudizio assoluti, ti concedo il beneficio del dubbio. --TrameOscure (disc.) 08:55, 13 dic 2024 (CET)Rispondi
Ma sono quello che parlava del Topic ban quello che voleva aiutarti--160.80.177.48 11:00, 13 dic 2024 (CET)Rispondi
Ok, quello di uniroma. Sai, sono intervenuti vari IP, alcuni anche dicendo cose piuttosto assurde e incoerenti, tipo chiedere un CU fra me e un altro IP che proponeva di infinitarmi (?!?). E io sono ancora un po' girato per le alte vette di illogicità, ridicolo e ipocrisia toccate là dentro. Ti ringrazio del tentativo. Sei lo stesso che ha fatto questo intervento? Perchè dopo 180kb di logorroici e ripetitivi bla bla, dire "annullate tutto e riaprite un'altra pagina" per un mero formalismo scusa ma avrà fatto girare un po' le palle a qualcuno... Capisco la buona fede e sollevare (formalmente giusti) rilievi, ti ringrazio del pensiero, ma a quel punto si aggiungeva solo casino inutile ad una roba che è stata di puro sfinimento, specie per me. E poi nella patria dell'arbitrio, la logica e i fatti non funzionano proprio. Per altri colloqui penso che su Wikipedate saresti un ospite gradito: qua è un po' OT. Ciao e buoni studi.
ps: qua su wikisource si pubblicano anche Tesi di laurea discusse. Magari ti interessa... -- TrameOscure (disc.) 17:35, 13 dic 2024 (CET)Rispondi

Dentro l'OCR

modifica

In breve.

  • lo strato testo dei file djvu è strutturato in blocchi; la libreria DjvuLibre consente l'esportazione della rappresentazione xml dei blocchi con il comando djvutoxml.exe.
  • se il file djvu deriva dalla conversione di un file pdf, la struttura è molto povera (costituita solo da blocchi line e blocchi word. E' comunque sufficiente (anzi, bastano i blocchi word).
  • ogni blocco word ha questa struttura: <WORD coords="407,329,576,291">Luigi</WORD>. Le coordinate (origine top-left) rappresentano x1, y1, x2, y2 del rettangolo dell'immagine che contiene la parola. Uno script python estrae tutti i blocchi word e per comodità li converte in oggetti tipo [407,329,576,291,"Luigi"] più maneggevole.
  • lo strato testo del pdf NON riproduce bene il contenuto delle linee originali; nè, naturalmente, lo fa il file xml del djvu derivato. Avviene che blocchi di parole siano spostati in altre linee.
  • elaborando le coordinate, è possibile ricostruire le linee e, al loro interno, la corretta sequenza delle parole.

Le coordinate potrebbero essere sfruttate per una marea di altre elaborazioni, ma per adesso mi sono fermato qui. Le prime pagine caricate stanno in Pagina:Pirandello - Novelle per un anno, Volume II - La vita nuda, Verona, Mondadori, 1953.pdf/22 e successive. Alex brollo (disc.). 13:21, 14 dic 2024 (CET)Rispondi

PS: l'algoritmo ha al momento un grosso difetto: non funzionerebbe su pagine un po' sghembe. Sto riflettendo a come migliorarlo. :-) Alex brollo (disc.). 18:35, 14 dic 2024 (CET)Rispondi
@Alex brollo
Argh, qua andiamo nel tecnicissimo del formato dei file a basso livello... che mi incuriosisce molto ma non ne so proprio nulla... :-(
OCR a parte, pensavo che i pdf fossero usati tal quali, e fossero scansioni pure e semplici (=bit map), senza strutturazioni interne, semplicemente "incollate" nella pagina pdf. Invece si passano in djvu e poi se ne fa l'OCR? E avevo capito anche che il djvu si basasse sui glifi, non sulle parole (quindi blocco-glifo, non blocco-word)...
In pratica non avevo capito una mazza :-D
Il discorso a valle dell'OCR ok, sono fantasioso e mi immagino concettualmente come debba funzionare un algoritmo del genere: ogni stringa/word UTF8 (?) ha le sue coordinate (ma non basta x1,y1 ?) e quindi si mettono in fila secondo il crescere delle X a ~parità di Y, e poi al crescere delle Y secondo un delta medio dell'altezza di riga. Quindi ok il concetto ma da qui a scriverlo in un linguaggio...
A monte e "nell"'OCR come debba funzionare un alg. che "monta" un raster fatto di pixel in blocchi-parole con coordinate e relative stringhe... quello non me lo immagino proprio ed è di gran lunga oltre le mie capacità. Curiosissimo lostesso, ma out of (my) range :-D
Ma non so se è questo che mi stai chiedendo... Sei tu che scrivi 'sti algoritmi? Cioè sei uno sviluppatore di DjvuLibre? 😲 --TrameOscure (disc.) 19:05, 14 dic 2024 (CET)Rispondi
@TrameOscure Hai presente quando selezioni, in un pdf con strato testo, alcune parole? O quando effettui una ricerca di testo, e il testo viene evidenziato? Quei rettangolini colorati sfruttano le coordinate del testo nell'immagine: se non ci fossero le coordinate, non sarebbe possibile.
Non preoccuparti della trasformazione in djvu per estrarre testo e sue coordinate; il djvu è "aperto e accessibile" proprio come il pdf è "chiuso e inaccessibile". Il djvu è stato creato apposta (oltre che per consentire una maggiore compressione dei file, cosa che, ai tempi, era importante). Che io sappia, solo io faccio queste stranezze, perlomeno in itwikisource: non sono affatto pratiche correnti, e non sono nemmeno necessarie per lavorare bene in wikisource. Quindi, se vuoi, ignora pure tutto... ti ho visto fare cose complesse e pensavo che ti fossi occupato anche di questo. :-) Alex brollo (disc.). 22:39, 14 dic 2024 (CET)Rispondi
@TrameOscure Trovo una domanda a cui non ho risposto.... no, non sono affatto uno sviluppatore dj DjvuLibre, ma solo un utente di lungo corso di parecchi script di DjvuLibre. E' sufficiente per essere un po' alieno. :-) Alex brollo (disc.). 22:43, 14 dic 2024 (CET)Rispondi
@Alex brollo
  • si ho presente pdf del genere, mi è chiaro che abbiano un OCR incluso. Ma sono abbastanza rari e non ho mai approfondito. Cmq il discorso sulle coord. mi ha acceso una lampadina sul come siano strutturati "sotto il cofano", anche quelli più comuni di solo testo, e perchè quando se ne copiaincolla il contenuto si hanno i noti problemi: insomma, se il testo è diviso "per parola", ora tutto mi torna. Davvero interessante.
  • prima di capitare qua non conoscevo il djvu: ma sembra che l'uso sia un po' in declino ([1]) a vantaggio del pdf... Ti risulta? Non ho avuto il tempo di approfondire e migliorare molto la voce relativa di it.wiki, una di quelle scritte nella notte dei tempi e sostanzialmente abbandonate per i successivi 20 anni.
  • naaa... che complesse. E poi vedo che sei admin d'interf. "stabile", quindi di certo non puoi trovare complessi i miei paciocchi sui css :-D Mi sembra più complesso occuparsi da soli di formati esotici! :-D Quindi sei tu l'unico che carica in ws tutti i djvu? WS è un progetto complicatissimo e diversissimo da WP, devo ancora coglierne tutti gli step... 😲 anche solo per capire il workflow complessivo.
  • Ma se mi indichi di preciso qual'è il problema che sopra hai descritto con "algoritmo ha al momento un grosso difetto: non funzionerebbe su pagine un po' sghembe. Sto riflettendo a come migliorarlo" magari qualche idea mi viene. Sarebbe uno script del progetto djvulibre, di ws o tuo personale? Scritto in cosa? è quello che mette in ordine le word? 👽 :-D
TrameOscure (disc.) 10:14, 15 dic 2024 (CET)Rispondi
@TrameOscure Oltre a un po' di roba di base (html, poco css, un po' di regex) io uso solo javascript e python (giusto quello che mi basta, eh!). Se i "piani alti", fra le varie opzioni tesseract OCR, concedessero anche il formato hOCR (ouput opzionale di tesseract, restituisce la "mappatura" del testo con la stessa logica de djvu.xml) potrei lavorare sulle coordinate anche in javascript; al momento, uso python sia offline, che con la libreria pywikibot. Le elaborazioni di cui parliamo sono in python offline; la conversione eccellente da pdf a djvu (strato testo compreso) si fa con pdf2djvu, sia offline che online. Il bot mi serve per caricare il risultato. Naturalmente, poi ci si appoggia sulla libreria DjvuLibre, sia direttamente dalla console, che con invocazioni da python.
Comunque: la prima fase di qualsiasi OCR consiste nella "segmentazione" del testo, a vari livelli, almeno linee-parole-caratteri; quindi i dati delle coordinate vengono sempre raccolti, anche se alle volte sono utilizzati solo per fini interni e non restituiti.
Il problema delle linee sghembe, con un po' di pazienza, è risolvibile; ma per Novelle per un anno sono più urgenti due pensate: come riconoscere bene le indentature di inizio paragrafo, e come "indovinare" i trattini di inizio battuta ed eventualmente anche i trattini intercalati nel testo a fine battuta; stranamente l'OCR spesso non li restituisce.
Come avrai capito, sono concentrato sui trucchi che sveltiscono l'editing, il che è essenziale perchè l'editing è lo "zoccolo duro" del lavoro su wikisource. Esattamente l'opposto di wikipedia, dove lo "zoccolo duro" è la creazione di contenuti testuali (e non solo), "originali, ma rigorosamente non originali" ;-). Alex brollo (disc.). 12:16, 15 dic 2024 (CET)Rispondi

Chi è causa del suo mal...

modifica

Hai dimostrato interesse per gli intrichi dell'OCR... aite... ;-)

Ho avuto un'intuizione delirante: un sistema per risolvere sia il problema delle pagine sghembe che quello delle linee di testo non diritte, ma incurvate (succede). Sono curioso di sapere se l'idea ti pare promettente.

Poche righe di python (11..) mi restituiscono la lista degli oggetti WORD di una pagina xml, ciascuno con le sue coordinate. E' tutt'altro che impossibile registrare, parola per parola, quale altra parola della lista è molto vicina nelle quattro direzioni: sopra, sotto, a destra e a sinistra. Nel caso delle parole periferiche della pagina, che sono particolarmente importanti, alcuni di questi agganci mancheranno e la loro mancanza darà informazioni critiche.

Che te ne pare, dal punto di vista logico? Alex brollo (disc.). 23:54, 15 dic 2024 (CET)Rispondi

@Alex brollo, al contrario, 'sti problemi mi piacciono un sacco!
Ti dirò, non ho ancora capito bene tutto il meccanismo perchè senza vedere dei dati concreti (xml o le tuple python), la pagina da cui sono tratti, e il codice che li elabora, mi riesce un po' difficile pensare a soluzioni che vadano oltre l'astratto. E le idee astratte temo si schianterebbero al primo caso reale :-D. Se mi indichi dove trovare qualche materiale di questi, elaboro meglio la questione. Se non sono già presenti in qualche meandro di ws, sentiti libero di creare una sottopagina della mia talk e mettercele dentro, così ragiono su dati reali. Cioè, vorrei vedere di una paginetta "standard" con poco testo, come si presenta il dato grezzo e come si passa da word+coord a un testo continuo. E già che ci siamo che ruolo hanno in questo le "line" (oltre le word) di cui hai anche parlato. Tipo questa o questa come si presentano grezze?
Cmq si, dal punto di vista logico "giocare" con le coordinate raggruppandone i valori in vari modi è indubbiamente la strada da seguire. TrameOscure (disc.) 11:46, 16 dic 2024 (CET)Rispondi
@TrameOscure Come diceva Manzoni? "Lo sventurato rispose".
Hai scaricato la libreria DjvuLibre? Se sì, scarica anche un djvu e partiamo con l'esplorazionem da fare rigorosamente da una console o da cmd.exe se sei sotto windows. MIca usi Mac?
Lo strato testo strutturato si ottiene con tre comandi: djvutxt, djvused oppure djvutoxml. I primi due restituiscono un formato lisp-like, fastidioso perchè l'origine delle coordinate è down-left invece che il solito top-left; na hanno il vantaggio che puoi chiedere il livello di dettaglio del blocchi. I livelli sono PAGE, COLUMN, REGIONm PARAGRAPH, LINE. WORD e CHAR (ma il livello CHAR spesso manca).
Per vari motivi io preferisco il formato xml; ma il formato lisp-like è molto più compatto e per una semplice esplorazione è più comodo.
Una volta che lanci con gli opportuni parametri djvused, ottieni un file di puro testo. Non solo: puoi editarlo con qualsiasi buon editor di testo e ricaricarlo sul djvu.
Dall'inizio della pagina 9 del testo cher mi hai proposto:
:: (page 182 40 1538 2158 
::  (column 280 2082 1246 2158 
::    (region 280 2082 1246 2158 
::      (para 280 2082 1246 2158 
::        (line 280 2082 1246 2158 (word 280 2084 346 2152 "IL") 
::          (word 392 2082 644 2152 "GRILLO") 
::          (word 694 2086 828 2154 "DEL") 
::          (word 876 2086 1246 2158 "FOCOLARE") ) ) ) ) 
::  (column 553 1574 957 1626 
::    (region 553 1574 957 1626 
::      (para 553 1574 957 1626 
::        (line 553 1574 957 1626 (word 553 1574 729 1626 "PRIMO") 
::          (word 763 1576 957 1626 "GRIDO.") ) ) ) ) 
::  (column 182 282 1342 1400 
::    (region 182 282 1342 1400 
::      (para 182 704 1340 1400 
::        (line 245 1341 1334 1400 (word 245 1352 284 1394 "Il") 
::          (word 303 1341 489 1396 "paiuolo") 
::          (word 511 1353 803 1399 "incominciò!") 
::          (word 824 1353 896 1398 "Nè") 
::          (word 911 1355 975 1398 "mi") 
::          (word 994 1355 1096 1398 "cale") 
::          (word 1118 1356 1165 1400 "di") 
::          (word 1181 1342 1334 1397
con il comando djvutxt -page=9 -detail=word Dickens_-_Il_grillo_del_focolare,_1869.djvu>pagina9.txt Alex brollo (disc.). 15:30, 17 dic 2024 (CET)Rispondi
@Alex brollo Ok, ci sono, ho l'xml. Ma niente furbate, Egidio! XXD --TrameOscure (disc.) 16:18, 17 dic 2024 (CET)Rispondi

Vedo che l'xml a differenza del tuo ha coord solo per le word. E che le linee qua sono abbastanza dritte e le y oscillano solo di 1-2-3 unità.

  • I rientri a sto modo sembrano abbastanza facili da individuare: la prima X di una line differisce dalle altre che invece sono pure lì quasi uguali
  • se la scansione è storta, le Y dovrebbero avere un delta che si può calcolare come diff della Y della word con la X minore e Y i quella con al X maggiore. Su più line. Poi fare la media, e ricorreggere riga per riga le Y applicandogli una quota del delta crescente, mano a mano che cresce la X.
  • se la scansione è curva (tomi spessi) è più un casino perchè il Δy non è lineare ma... boh, curvo, ma forse sempre correggibile mediando fra varie righe (saranno tutte curve uguali, e con parole che si trovano a valori di X sufficienti a costruire una curva + o - matematicamente definita.

Così le word dovrebbero finire sulla riga giusta del testo... Ma il tuo problema qual'era? In fondo se hai già le line, le parole di una riga sono già nella stessa line... 🤔 Oppure dici che ci sono word che sono fra tag line di un'altra riga? Tipo:

::(line 280 2082 1246 2158 (word 280 2084 346 2152 "IL") 
::          (word 392 2082 644 2152 "GRILLO") 
::
::          (word 876 2086 1246 2158 "FOCOLARE") ) ) ) ) 
::  (column 553 1574 957 1626 
::    (region 553 1574 957 1626 
::      (para 553 1574 957 1626 
::        (line 553 1574 957 1626 (word 553 1574 729 1626 "PRIMO") 
::          (word 694 2086 828 2154 "DEL")     <<<<questa è fuori posto
::          (word 763 1576 957 1626 "GRIDO.") ) ) ) )

--TrameOscure (disc.) 16:53, 17 dic 2024 (CET)Rispondi

@TrameOscure IL problema è che talora l'attribuzione delle parole alle linee è sbagliato! E la conseguenza è che caratteri, parole o gruppi di parole sono spostati dalla corretta sequenza. Succede particolarmente nei pdf. Orientarsi e correggere questi spostamenti di parole a tradimento è logorante e rallenta moltissimo la trascrizione.
Come ti dicevo, il ritorno di fiamma del mio interesse sul tema è l'OCR di Novelle per un anno, dove il problema si è presentato in maniera particolarmente fastidiosa.
Ma ricostruire la sequenza delle parole è solo il primo passo: il mio obiettivo è molto più ambizioso... ricostruire i paragrafi; identificare i testi in versi; indovinare i centrati, e il loro font-size; identificare le regioni con testo a formattazione non standard (come sono, di regola, le annotazioni a piè di pagina); identificare e formattare le tabelle, almeno quelle "regolari"... Alex brollo (disc.). 08:54, 18 dic 2024 (CET)Rispondi
Andiamo avanti.
Il problema principale dell'elaborazione delle coordinate è che il software si destreggia benissimo con l'uguaglianza, ma trova grosse difficoltà con le "lievi disuguaglianze", cosa che invece l'occhio umano coglie immediatamente. Esempio: l'altezza delle singole parole ad occhio sembra uguale, ma le coordinate dicono che sono diverse; e le diversità dipendono sia dai caratteri (maiuscole, minuscole, tratti ascendenti, tratti discendenti) sia da piccole variazioni casuali. La distribuzione delle altezze è, statisticamente, plurimodale. E questo avviene per qualsiasi misura. Ma qual'è la differenza fra variazioni che vanno trascurate, e variazioni significative? E come farlo calcolare al software, evitando di prevedere limiti arbitrari? Intanto che passeggio con i miei due cani, questo è attualmente il problema che tento di risolvere in maniera efficiente (l'analisi statistica della plurimodalità è un casinaccio, una via che ho abbandonato).
Risolto questo problema, molte cose si chiariscono: i paragrafi si riconoscono dalla indentatura "significativa"; il font-size di un paragrafo da una differenza significativa dell'altezza delle parole e spesso da una differenza significativa dell'interlinea.
Problema successivo, il riconoscimento di pattern. Le poesie si riconoscono per essere un blocco continuo di righe più brevi della norma, spesso con un'indentatura "ragionevole" e ricorrente; i titoli per la centratura e un font-size significativamente dai valori "normali", ecc. Nessuno dei software OCR prevede il risconoscimento dei possibili poem, nè, ad esempio, delle note a piè di pagina.
Tutto ciò, per me, ha un certo fascino :-) Alex brollo (disc.). 10:26, 18 dic 2024 (CET)Rispondi
@Alex brollo:
  1. Ok, ma le coordinate sono giuste ed è solo un problema di collocazione della WORD all'interno del giusto tag LINE (come nell'esempio artefatto che ho postato sopra) o proprio è tutto completamente sballato? Perchè nel primo caso si può pensare ad un fix complicato quanto vuoi ma automatico, nel secondo mi sembra impossibile.
  2. capisco bene uguale vs. quasi-uguale, infatti parlavo di medie e/o di parametri di "approssimazione" da passare all'algoritmo per vedere cosa sputa fuori nei vari casi (gli dai un valore 1 di approssimazione e vedi che risultato produce, se non va gli dai 2, ecc finché il risultato è accettabile).
Pigliamo uno spezzone:
(para 280 2082 1246 2158
(line 280 2082 1246 2158 (word 280 2084 346 2152 "IL")
(word 392 2082 644 2152 "GRILLO")
(word 694 2086 828 2154 "DEL")
(word 876 2086 1246 2158 "FOCOLARE") ) ) ) )
la y1 top left di ogni parola della riga non è così diversa, anzi vedo che la coordinata della line è x1y1 della prima word e x2y2 dell'ultima, ovvero il rettangolo che include tutte le word della line (come per le singole word è il rettangolo che include la parola). Ora, puoi impostare un parametro di approssimazione "4" e catturi da 2082 a 2086. O magari fare la diff. ymax-ymin=4 e poi aggiungere come approssimazione arbitraria "2" (totale 6) per applicarlo infine alla media fra 2082 e 2086, cioè 2084+/-6. Si può anche fare lo stesso con le y2 (2158-2152=6 + appross. 2 = tot.8) e poi la media delle due medie (7).
E' sufficiente che l’approssimazione (quindi il conseguente range di y) non vada ad interferire con le y della line successiva per riuscire a discriminare le line, ma mi sembra difficile che capiti.
Tralascio per ora i passaggi successivi e più complessi, ma trovo anche io che il problema, come molti problemi, abbia un certo fascino...👽 :-D -- TrameOscure (disc.) 11:02, 18 dic 2024 (CET)Rispondi