Newsgroup: it.comp.appl.access
Titolo: Convertire in testo una zona video con OCR

Un saluto a tutti.
Ecco il problema sul quale sono impantanato in questo periodo.
C'è un'applicazione proprietaria che visualizza, in una particolare 
posizione della propria finestra di esecuzione, poche lettere ed un numero 
anch'esso di poche cifre. Questa applicazione non utilizza nè OLE, nè DDE e 
la si può usare solo col mouse.
In un altro task gira la mia applicazione Access... che vorrei potesse fare 
click su un pulsante dell'altra applicazione al verificarsi di alcune 
condizioni.
Col vostro aiuto ho già risolto il problema del click sull'altra finestra, 
ma mi manca quella cosa importante che ho esposto all'inizio: ovvero come 
faccio a fare leggere ad Access quelle poche lettere che quell'altra 
procedura mi espone a video ?
Si tratta di quotazioni di divise estere che, mancandomi per ora la 
soluzione, un operatore legge sulla finestra della prima applicazione e 
digita nel controllo di Access, ma questa soluzione non consente l'obiettivo 
primario: cioè che la procedura deve poter funzionare anche se non è 
presidiata da nessuno.
Scusate per la lunghezza del post, ma era doveroso cercare di spiegare il 
problema per chiedere a voi idee e soluzioni ipotizzabili.
Ciao e grazie.
Antonio

 ha scritto nel messaggio news:4674464f$0$21198$5fc...@news.tiscali.it...

Ma questa procedura come fa ad ottenere i dati? Si connette ad un server su internet?
A questo punto penso che se questa procedura non ha un modo per esportare (o condividere) le informazioni che a te servono, l'altra 
strada è quella che provare a connettersi direttamente alla fonte dati...
Ciao.
-- 
Sergio MAZZA 

 ha scritto nel messaggio 
news:f52pml$she$2...@tdi.cu.mi.it...

Sì Sergio, la procedura è costantemente collegata ad un server centrale 
(credo non tramite Internet) e più o meno ogni minuto aggiorna ed espone le 
quotazioni. Non mi è dato nè conoscere, nè tantomeno poter accedere con 
un'altra applicazione ai dati che cattura questa procedura. Per motivi di 
sicurezza so che si instaura un andirivieni di frasi crittografate e 
passwords determinate con 3 livelli di segretezza; cioè occorrerebbe un 
accordo subdolo di tutti e tre gli analisti programmatori (forse non 
basterebbe neppure) che hanno messo in piedi, ognuno separatamente dagli 
altri, la costruzione della password al proprio livello. Capirai bene, 
quindi, che se solo mi permettessi di chiedere informazioni su quella 
procedura, potrei trovarmi assegnato alla filiale di Pechino o di 
Joannesburg da un momento all'altro.
D'altra parte l'idea non è malvagia... quella procedura fa bene il suo 
lavoro ed Access, in locale, dovrebbe fare quello che farebbe un operatore 
al suo posto: ovvero impartire l'ordine di acquisto o vendita.
Comunque, al di là del mio problema contingente, c'è un modo per poter 
leggere qualcosa che viene esposto a video ? I caratteri visualizzati si 
trovato in una sorta di buffer del video ? Questo buffer lo si può leggere ? 
E' in una posizione fissa o variabile di memoria ? C'è un'API che mi 
consente di leggerlo ?
Le domande potrebbero essere tante e, magari, la soluzione al problema 
potrebbe consistere in poche righe di codice... ma chi mi sa dare queste 
informazioni nascoste nei meandri del sistema operativo ?
Ciao
Antonio

 ha scritto nel messaggio 
news:4674464f$0$21198$5fc...@news.tiscali.it...

Tecnicamente è possibile...
Per mia conoscenza le strade sono due: un tool a pagamento come i LeadTools 
con il modulo OCR e "Microsoft Office Document Imaging" tramite il 
"Microsoft Office Document Imaging Object Model" usabile solo a partire 
dalla versione 2003.
Qui puoi cominciare a leggere qualcosa sul modello:
http://msdn2.microsoft.com/en-us/library/aa203311(office.11).aspx
Ciao, Carlo 


Grazie Carlo,
ti dirò che avevo visto qualche giorno fa il tuo post con le indicazioni per 
la gestione delle immagini e m'ero annotato di approfondire l'argomento non 
appena possibile.
Non ho ancora visto la pagina cui mi hai indirizzato, ma intravedo tanta 
difficoltà perchè il mio inglese è da prima elementare (forse anche meno).
Se la spesa non è proibitiva, forse potrei anche tentare di fare acquistare 
quel prodotto che mi indichi, ma ci sarà la possibilità di provarlo per 
qualche giorno prima di concludere la transazione ? Questo perchè ho provato 
con 2 distinti applicativi per la lettura degli ocr, ma interpretano male 
quella zona del video di cui parlavo... alcune volte ha funzionato, altre no 
e, quindi, la non attendibilità ne ha bocciato l'utilizzo. I LeadTools 
saranno più "raffinati" ?
In ogni caso, grazie per le dritte.
Buona serata
Antonio


Sì puoi scaricare i leadtools nella versione demo e perfettamente 
funzionante e decidere dopo per l'acquisto (siamo sui 4/500 euro) a seconda 
della versione.
Purtroppo anche questi sono in inglese e richiedono una certa dimestichezza 
con il codice.
Probabilmente la soluzione di Microsoft potrebbe essere la scelta migliore.
Qui altri link:
http://office.microsoft.com/it-it/help/CH010001181040.aspx
http://office.microsoft.com/en-gb/help/HP010771031033.aspx
http://www.microsoft.com/downloads/details.aspx?FamilyId=8F93E445-B1CF-4477-A373-E17417D616BC&displaylang=en
http://support.microsoft.com/kb/839369/it
Qui trovi un esempio di codice per riconoscere il testo da una immagine:
http://www.damirscorner.com/OCRWithMicrosoftOfficeDocumentImaging.aspx
In pratica quello che devi realizzare è prima di tutto selezionare la 
porzione di schermo da "fotografare" o l'intera maschera se è piccola; poi 
salvare l'immagine in tif e passarla all'OCR. L'intero procedimento potrebbe 
essere automatico ma, ti assicuro, non è un giochetto.
Mi pare che un'altra soluzione potrebbe essere l'acquisto di Scansoft 
OmniPage (si trovano delle offerte a buon mercato) che permette di 
utilizzare da codice i suoi ocx o dll.
Buon lavoro.
Ciao, Carlo

 Antonio
Catturare i caratteri visualizzati sullo schermo non è impossibile; non 
facile ma non impossibile.
L'OCR effettua una scansione di una immagine ma non da memoria (catturata 
per es. col tasto ALT-Stamp o CTRL-Stamp) ma da file; a meno di scaricare 
nell'OCR l'immagine da ClipBoard.
Poi entra in gioco le impostazioni dell'OCR con le quali tenta di leggere i 
caratteri; è possibile che una schermata a colori renda meno di una in b/n, 
con la perdita di tempo di verificare e correggere i dati da inserire.
Secondo me non è la via giusta, il rapporto tempo impiegato/risultato 
ottenuto non è favorevole.
(non ricordo se l'hai già detto) Se questa applicazione "gira" in una 
finestra DOS potresti attivare la copia di tutti i caratteri presenti sullo 
schermo (icona DOS - Modifica - Segna - (alla fine) Invio) e allora sì che 
hai i veri caratteri. Si tratterebbe di leggere la posizione giusta ed 
"importare" i dati...
Ciao.
-- 
Sergio MAZZA 


Ciao Sergio,
come ogni buon programmatore (spero che questo "buon" sia la verità e non 
solo una mia stupida presunzione) ogni problema come quello che ho esposto e 
del quale riesco ad intravedere la possibile soluzione è una sfida alla 
quale non riuscirei a sottrarmi. Fortunatamente mi trovo nella condizione in 
cui sono io che dico agli altri di cosa potrei occuparmi per cercare una 
soluzione utile a tutti. Nessuno mi ha imposto di riuscire... ma se ce la 
farò potrebbe essere come la mia personale pubblicità alla MasterCard 
("comprare questa vittoria non ha un costo, per tutto il resto c'è 
MasterCard").
Ricordo che all'epoca del DOS, in basic (il mitico gwbasic), riuscivo a 
leggere il buffer del video... allora era una semplice sfida con me stesso, 
perchè forse non ce n'era bisogno, non ricordo perchè lo facevo (ma forse 
anche oggi è così). L'applicazione di cui parliamo, invece, è una Signora 
applicazione, con la S maiuscola, e che, forse, chi la realizzò aveva anche 
ipotizzato che un bischero come me avrebbe tentato di catturare i dati 
esposti... su uno sfondo graficamente complesso e che, tanto per complicarne 
le cose, si modifica ad ogni esposizione dei nuovi valori: in questo modo 
balza agli occhi che c'è un aggiornamento.
Carlo Costarella, che ringrazio infinitamente, mi ha fornito dei 
preziosissimi consigli e siti che ho trovato validissimi... quello che mi è 
servito maggiormante è il sito col download del manuale MODI, del quale 
ignoravo l'esistenza.
Ho già provato ad usare questa tecnica, ma il risultato non è stato dei 
migliori in quanto il colore di fondo, ahimè cangiante, non ha fatto 
riconoscere come ocr l'intera zona che mi interessa, ma solo una parte.
Sto pensando di utilizzare congiuntamente anche il programma FastStone 
(freeware) che, pilotato dalla mia applicazione, legge la zona del video non 
riconosciuta come ocr e la confronta con le 20-30 possibili che ho 
memorizzato in dei files... in questo modo posso essere sicuro che quella 
esposta è la quotazione, per esempio, dell'USD o del GBP e così via.
Ora basta se no i mastini del newsgroup mi addenteranno per "eccessive 
chiacchiere indesiderate".
Ciao a tutti
Antonio