Newsgroup: it.comp.os.linux.software
Titolo: scriviamo un ocr per linux?

Sto scrivendo un ocr open source abbastanza promettente.
Qualche programmatore possibilmente in lingua italiana ha voglia di
collaborare?
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 inserisci in un progetto esistente?
Buona domanda..
Ciao.
-- 
*** Linux user # 198661 ---_ ICQ 33500725 ***
    ***  Home  
http://www.kailed.net
  ***
        ***  Powered by openSUSE  ***

 collaborare?
Spero che tu non stia scrivendo l'ennesimo "motore" ocr come i soliti
noti. Non se ne sente proprio il bisogno. IMHO, ovviamente.
Se invece, stai lavorando su qualcosa di "tosto" e per tosto intendo
un'applicazione completa, hai tutto il mio appoggio (morale, non sono
un programmatore..). Eventualmente, sarò felice di fare un po' di
testing..
Rimane valida "l'obiezione" fatta da remolo nell'altro post, cioè quella
di collaborare con progetti già esistenti..


Grazie delle risposte.
Io sono un programmatore dilettante con buone basi di matematica.
per me l'OCR è per metà un fine e per metà una palestra per sperimentare 
nel concreto qualche idea matematica.
In effetti non ho una conoscenza esaustiva del panorama OCR per Linux 
attuale.
Ho provato gocr ma mi sembra molto carente.
Ho collaborato a CLARA, ma il progetto si è arenato.
Ho sentito parlare bene di tesseract, ma non l'ho ancora provato. Da quel 
che ho letto è un buon motore.
Secondo voi qual è il progetto più promettente?
Quali sono le caratteristiche più urgenti che ancora mancano?
Il progetto che sto coltivando vorrebbe essere abbastanza completo.
Finora fa preprocessing (pulitura, bilanciatura della luce e deskewing) 
riconosce le colonne nell'ordine giusto, classifica i caratteri e 
riconosce quelli dei font principali. Si basa sull'analisi di Fourier dei 
contorni.
Come sottoprodotto ho una compressione delle pagine scannerizzate simile 
a quella di djvu, e che dovrebbe migliorare per documenti multipagina.
Inserirò anche un'euristica correttiva basata sulle frequenze delle 
coppie consecutive di caratteri.
Lo scoglio grosso sono i caratteri incollati e soprattutto quelli 
spezzati, ma non dovrebbe esssere inaffrontabile.
Finora l'interfaccia è a terminale, con un po' di ascii-art per un minimo 
di interattività. 
Ciao!


 a quella di djvu, e che dovrebbe migliorare per documenti multipagina
[...]
se potesse esportare in djvu sarebbe una caratteristica direi unica. non 
sono attualmente in grado di finanziarti, ma ovemai lo fossi mi ricorderò 
di te, se puoi mettere su un sito anche rudimentale
-- 
Puppy Linux wiki:  
http://puppylover.netsons.org/dokupuppy
Puppy Linux Forum: 
http://puppylinux.ilbello.com

 ricorderò di te, se puoi mettere su un sito anche rudimentale
Scusa, mi sono spiegato male: intendevo che il LIVELLO di compressione è 
simile a quello di djvu. 
Ma non capisco bene cosa intendi...

 intendevo che il LIVELLO di compressione è simile a quello di djvu.
[...]
e l'avevamo capito, ma, come Abyy Finereader è capace di esportare il 
risultato del riconoscimento ottico caratteri in pdf composito (searchable 
pdf image) ovvero un pdf a più livelli col testo sotto e le immagini 
soopra così da preservare l'aspetto del documento rendendolo allo stesso 
tempo ricercabile e indicizzabile, così, un OCR che prevedesse 
l'esportazione dell'output in formato djvu (questo fantastico formato) 
sarebbe il migliore possibile
esiste molta documentazione OpenSource in merito alla produzione di djvu 
(vedere djvulibre)


Ho capito grazie! Sì, è un obiettivo ambizioso, ma chissà...
G.


 minimo di interattività.
Buono per iniziare, ovviamente prima sviluppi il "motore" poi il resto.
Devi valutare tu, in base alle tue possibilità se ti conviene continuare
per la tua strada oppure se contribuire a qualcosa di esistente...


GiulioL ha scritto:

Mia opinione personale:
- se il tuo ocr ha la stoffa per essere di alta qualità, puoi aprire una 
pagina su SourceForge (beninteso, se intendi proseguire sulla strada 
dell'open source e se non hai problemi con SourceForge) ed attendere il 
feedback su quanto hai già preparato. I collaboratori si faranno avanti 
da soli.
- per sapere se ha la stoffa giusta, il mio campione è Abbyy FineReader 
(ovviamente per Windows): se ottieni risultati paragonabili a 
FineReader, sei sulla buona strada.
- un ocr per Linux ha senso solo se può funzionare a livello 
professionale, di mezze calzette buone solo a scansionare una pagina 
corpo 24 senza macchie ce ne sono fin troppe.
Inizia a mettere una milestone al tuo progetto, e metti il tutto su 
SourceForge in modo che si possa tutti valutare il tuo progetto.
Ciao
Andrea

 di interattività. 
Cioe` ti sei ricalcolato a mano la posizione dei caratteri? Male,
ncurses esiste apposta per uniformare le cosiddette TUI
Enrico

 Anzi erano fotocopie di un libro degli anni '30
Era il libro degli anni '30 o lo erano le fotocopie? ;)
Enrico



Scusa, non conosco ncurses.
Permette di rappresentare parti di una bitmap 
e di scegliere la posizione e la scala?
Grazie, G.

 e di scegliere la posizione e la scala?
Prima di rispondere conviene che chiarisca una cosa: tu hai detto che
per ora hai creato una interfaccia in ASCII Art. Se quindi non ho capito
male, tu hai creato una interfaccia riposizionando manualmente il
cursore in un terminale od in una console. Per fare questo esiste la
libreria ncurses, che premette di creare interfacce testuali (alla
Midnight Commander per capirci). Se poi tu intendi visualizzare della
grafica in console, allora non e` su ncurses che devi indirizzarti, ma
sulla libreria SVGALib o sulla programmazione via framebuffer.Infine, se
proprio non ho capito niente, e tu vuoi creare un'interfaccia grafica
vera e propria (che quindi si appoggia a X), vedi la libreria Gtk o la
libreria Qt (personalmente uso la prima, in quanto mi permette di
scegliere piu` liberamente la licenza con cui voglio rilasciare il mio
codice). Se fossi in te, comunque, strutturerei il progetto in due parti
distinte: un motore utilizzabile anche da linea di comando, ed un
frontend che si appoggia ad esso
Enrico

 frontend che si appoggia ad esso
S�, sono perfettamente d'accordo.
Finora ho scritto solo applicazioni a linea di comando,
ma adesso devo proprio cimentarmi con le interfacce grafiche.
Penso di buttarmi su GTK, per gli stessi motivi tuoi, e anche per la 
portabilit� sotto windows [ anche se non � il mio OS preferito :) ].
� difficile cominciare?
Grazie!
Giulio

 È difficile cominciare?
Direi che dipende dall'approccio e dal linguaggio che usi. Tieni
presente che le Gtk hanno i binding per praticamente qualsiasi
linguaggio disponibile su Linux, mentre per il loro utilizzo puoi
utilizzare tranquillamente uno dei due approcci:
1) Ti crei tutta la struttura dell'interfaccia da codice;
2) Usi Glade.
Nel primo caso e` ovvio che l'operazione e ` abbastanza rognosa
e ripetitiva, ma ti permette di rendere estremamente flessibile e
personalizzato il risultato finito. Nel secondo caso, invece, hai a
disposizione un editor grafico dell'interfaccia, che viene salvata in un
file XML e che dev'essere sempre disponibile all'applicazione.
L'utilizzo di Glade ti permette di risparmiarti molti passaggi, pero` ci
perdi in personalizzazioni spinte
Enrico

 
Interessante: cioč le ncurses (oltre ai bottoncini etc che non mi 
interessano + di tanto)
anche oggetti per lavorare con le bitmap?
Ad una prima indagin veloce non ne avevo trovati..
sai dirmi qcsa di +?
Grazie anche per tutti i consigli (e a tutti gli altri del NG!)
G.

 non ne avevo trovati.. sai dirmi qcsa di +?
Ho usato le ncurses una sola volta in vita mia, ma nemmeno io ricordo 
delle funzioni del genere.
Secondo me, per quello che serve a te, sarebbero meglio le libaa.
Se invece vuoi andare sul grafico, usa Gtk, che puoi far funzionare sia 
sotto X (normalmente) che in "console" tramite il supporto a directfb 
(che e` in beta, ma dovrebbe funzionare in buona parte).
Bye.

 (che e` in beta, ma dovrebbe funzionare in buona parte).
A tal proposito, ma si sa qualcosa sul supporto nativo a OS X ?
Enrico

 anche oggetti per lavorare con le bitmap?
No, non hanno oggetti del genere. Da quello che ho capito, pero`,
sembrava che a te non servissero. Se invece ho capito male (molto, ma
molto probabile), allora vedi libaa (in sostanza, una libreria di
conversione bitmap -> ascii art), SVGALib o la programmazione
framebuffer. Tieni presente pero` che queste sono implementazioni da
eseguire, secondo me, a livello di frontend, e non di backend
Enrico

 Bye.
Grazie 1000!
Ciao, G.

 
mmmh... sì e no.
il fatto è che per sviluppare anche solo il motore minimale ho
bisogno un minimo di interazione del tipo:
l'applicazione mi mostra un carattere e io le dico cos'è.
Siccome adesso non sto ancora pensando seriamente al frontend,
inserisco provvisoriamente l'interattività nel motore.
Insomma, il "motore" deve chiedere delle cose all'utente, e sono domande 
"grafiche"... non saprei come suddividere questa interazione tra 
frontend e backend.
Ma per adesso ho l'impressione che anche le aalib vadano benissimo.
A proposito: ho dato una guardatina alle ncurses e mi sembrano proprio 
carine e semplici da usare.
Grazie dei consigli!

 
Potresti mandarmi qualche immagine di quelle fotocopie per fare un po' di test?
Grazie!
G.

GiulioL wrote:

Vedo se riesco a recuperarle...
