Catturare del testo con textbox trasparente

di il
22 risposte

Catturare del testo con textbox trasparente

Salve, ho realizzato con vb2019 una form con una text box trasparente. quello che vorrei fare, e' catturare con una variabile, del testo scritto in una applicazione terza (nell'applicazione non e' possibile fare il copia e incolla), sovrapponendo la textbox trasparente sul testo . esiste una funzione anche elaborata o un metodo , o un componente esterno che permetta di fare questo ?.

grazie fin da ora a chi puo' darmi un aiuto.

22 Risposte

  • Re: Catturare del testo con textbox trasparente

    Il titolo evidenzia la textbox trasparente, ma sembra che non sia quello il problema ma l'pplicazione terza, insomma una gran confusione.
  • Re: Catturare del testo con textbox trasparente

    patel ha scritto:


    Il titolo evidenzia la textbox trasparente, ma sembra che non sia quello il problema ma l'pplicazione terza, insomma una gran confusione.
    quello che vorrei fare e' riuscire a catturare del testo scritto su un applicazione terza, posizionandoci sopra una textbox trasparente. trasparente deve essere per farmi vedere quello che voglio catturare, tutto qui. su google ho trovato degli articoli che citano " MICROSOFT DOCUMENT IMAGING" che e' in grado di leggere e scansionare. e' un componente OCR (riconoscimento ottico) e' contenuto in office 2003/2007, ma devo capire se' posso usarlo anche senza scanner e/o fotocamera per catturare il testo.
  • Re: Catturare del testo con textbox trasparente

    Sembra una lamerata

    se sei serio, stampati uno screenshot del desktop e prova a lavorare su un immagine vera
  • Re: Catturare del testo con textbox trasparente

    Weierstrass ha scritto:


    Sembra una lamerata

    se sei serio, stampati uno screenshot del desktop e prova a lavorare su un immagine vera
    non capisco cosa vuoi dire, e tantomeno non so cosa sia una lamerata. io seriamente cercavo la soluzione che ho esposto.
  • Re: Catturare del testo con textbox trasparente

    Vabbè, lascia perdere.

    Premi il tasto Stampa e poi puoi incollare lo screenshot del desktop in un bitmap, poi puoi sperimentare con gli OCR su un file vero

    Altrimenti fai prima a dire da dove vuoi prendere il testo. Sicuramente avranno disattivato il copia e incolla per un motivo...
  • Re: Catturare del testo con textbox trasparente

    Weierstrass ha scritto:


    Vabbè, lascia perdere.

    Premi il tasto Stampa e poi puoi incollare lo screenshot del desktop in un bitmap, poi puoi sperimentare con gli OCR su un file vero

    Altrimenti fai prima a dire da dove vuoi prendere il testo. Sicuramente avranno disattivato il copia e incolla per un motivo...
    ok, ho catturato la schermata del programma e salvato in formato windows bitmap e l'ho aperto con visual studio . pero' mi sembra di capire che per usare gli OCR si deve per forza scannerizzare il testo. ed io non vorrei usare tutte le volte lo scanner, ma vorrei catturarlo senza scanner. pero' gia' il fatto che ho aperto il bitmap con visual studio mi fa' intuire che potrei manipolare il testo, e questo mi fa' ben sperare.
  • Re: Catturare del testo con textbox trasparente

    Gli OCR lavorano su un file, attaccarli direttamente a uno stream è una cosa in più.

    Sicuramente c'è modo di farlo in .NET, ma sarà una cosa almeno mediamente complessa. Mi sembra un po' prematuro affrontare l'argomento ora.

    Prova a googolare "online OCR" e convertiti l'immagine con uno strumento terzo, per il momento
  • Re: Catturare del testo con textbox trasparente

    Weierstrass ha scritto:


    Gli OCR lavorano su un file, attaccarli direttamente a uno stream è una cosa in più.

    Sicuramente c'è modo di farlo in .NET, ma sarà una cosa almeno mediamente complessa. Mi sembra un po' prematuro affrontare l'argomento ora.

    Prova a googolare "online OCR" e convertiti l'immagine con uno strumento terzo, per il momento
    ah adesso ho capito perche' mi hai chiesto se' ero serio nella richiesta, perche' la vedi difficile. ok
  • Re: Catturare del testo con textbox trasparente

    nightman ha scritto:


    ah adesso ho capito perche' mi hai chiesto se' ero serio nella richiesta, perche' la vedi difficile. ok
    La verifica della serietà credo fosse dovuta alla stranezza della tua richiesta oltre al possibile utilizzo "malevolo" che ne potrebbe derivare e ai dubbi sull'effettiva capacità di integrare la funzionalità descritta da parte tua senza che qualcuno non posti esattamente la soluzione, visto che richiede un minimo di esperienza e conoscenza del sistema operativo, degli hook, delle API, ecc..
  • Re: Catturare del testo con textbox trasparente

    Alka ha scritto:


    nightman ha scritto:


    ah adesso ho capito perche' mi hai chiesto se' ero serio nella richiesta, perche' la vedi difficile. ok
    La verifica della serietà credo fosse dovuta alla stranezza della tua richiesta oltre al possibile utilizzo "malevolo" che ne potrebbe derivare e ai dubbi sull'effettiva capacità di integrare la funzionalità descritta da parte tua senza che qualcuno non posti esattamente la soluzione, visto che richiede un minimo di esperienza e conoscenza del sistema operativo, degli hook, delle API, ecc..
    niente di malevolo credo. a volte mi capita di navigare in siti in lingua inglese, lingua che non comprendo perfettamente. che in alcuni casi pubblicano del testo non copiabile. e avevo pensato di poter trasferire le parole che non capivo, per tradurle poi su google traduttore .
    cosi univo l'utile al dilettevole. divertendomi facendo pratica con visualstudio .
  • Re: Catturare del testo con textbox trasparente

    Il problema di per se non è difficile, ma ci vogliono delle competenze di base.
    Se hai Microsft Office 2003 o successiva, con Microsoft Office Document Imaging attivato, da VB .Net si può usare l'OCR di Office.
    Vedi immagine allegata che mostra le opzioni di installazione di Office 2007.

    Ci sono anche degli OCX dedicati, ma spesso sono a pagamento o limitati.
    Allegati:
    Office 2007
    Office 2007
  • Re: Catturare del testo con textbox trasparente

    Mi mangio le mani, avevo il 2007, l'ho disinstallato per installare il 2016 proprio una decina di giorni fa'. pero' c'e' l'ho su un altro pc , che tu sappia non e' che si puo' esportare il componente ?. o mi tocca reinstallare il 2007 ?.
  • Re: Catturare del testo con textbox trasparente

    Il componente ci dovrebbe essere lo stesso, non so se è già abilitato, in Office 2007 si doveva abilitare, basta che lanci l'installazione di Office 2016 e scegli l'opzione aggiungi/rimuovi caratteristiche, e controlla se risulta installato: Microsoft Office Document Imaging (vedi foto che già ti ho inviato).

    Poi nel progetto VisualStudio devi aggiungere il riferimento com.
    Apri un nuovo progetto VisualBasic/WindowsDesktop/App Widows Form (.Net Framework) e chiamalo OCR.
    Vai su esplora soluzioni: guarda l'immagine che si chiama riferimento.
    Scegli il componente com: guarda l'immagine che si chiama Imaging (da me il componente si chama Microsoft Office Document Imaging 12.0...), il tuo sarà una versione successiva.

    a questo punto, il tuo progetto VS può usare l'OCR di Office.
    
    Imports MODI
    
    ' necessita di office 2003 o successivo installato,
    ' nella personalizzazione dell'installazione di Office
    ' abilitare alla voce: Strumenti di Office -> Microsoft Office Document Imaging 
    ' Interop.MODI.dll deve risultare tra i riferimenti
    
    Public Class Form1
        Dim Percorso As String
    
        Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
            Percorso = Application.StartupPath & "\"
            Me.Text = "OCR fom screen, cartella di lavoro: " & Percorso
            TexNOMEFILES.Text = "OCR_immagine_01"
            ButTOPMOST.Text = "^ Top Most ^"
            ButENGLISH.Text = "OCR English"
            ButITALIANO.Text = "OCR Italiano"
            Me.MinimumSize = New Size(426, 290)
            Me.TopMost = True
            LabAREA.BackColor = Color.Gray
            Me.TransparencyKey = Color.Gray
            Me.BackColor = Color.DarkGray
        End Sub
    
        Private Sub ButENGLISH_Click(sender As Object, e As EventArgs) Handles ButENGLISH.Click
            Decodifica(MiLANGUAGES.miLANG_ENGLISH)
        End Sub
    
        Private Sub ButITALIANO_Click(sender As Object, e As EventArgs) Handles ButITALIANO.Click
            Decodifica(MiLANGUAGES.miLANG_ITALIAN)
        End Sub
    
        Sub Decodifica(lingua As MODI.MiLANGUAGES)
            Dim bmp As New Bitmap(LabAREA.Width, LabAREA.Height) ' dimensioni bmp, come label trasparente
            Dim g As Graphics = Graphics.FromImage(bmp) ' layer grafico
            Dim OffSetLEFT = 20 ' centraggio immagine, cambia in base allo stile di visualizzazione in win
            Dim OffSetTOP = 39 ' centraggio immagine, cambia in base allo stile di visualizzazione in win
            ' copia lo schermo in accordo con le dimensioni attuali
            g.CopyFromScreen(Me.Left + OffSetLEFT, Me.Top + OffSetTOP, 0, 0, New Size(bmp.Width, bmp.Height), CopyPixelOperation.SourceCopy)
            ' salvataggio bmp per verifica centraggio e archiviazione
            bmp.Save(Percorso & Trim(TexNOMEFILES.Text) & ".bmp")
            Me.Enabled = False ' form disattivato mentre si effetua la conversione
            Try
                Dim md As MODI.Document = New MODI.Document()
                ' caricamento in md dell'immagine bmp salvata
                md.Create(Convert.ToString(Percorso & Trim(TexNOMEFILES.Text) & ".bmp"))
                md.OCR(lingua, True, True) ' scelta lingua
                Dim image As MODI.Image = CType(md.Images(0), MODI.Image) ' immagine convertibile in testo
                RichTextBox1.Text = image.Layout.Text ' conversione e visualizzazione
                ' salvataggio testo
                RichTextBox1.SaveFile(Percorso & Trim(TexNOMEFILES.Text) & ".txt", RichTextBoxStreamType.PlainText)
            Catch ex As Exception
                ' errori se: Office non è installato, si inquadra un'area vuota, la bmp è troppo piccola.
                RichTextBox1.Text = ex.Message
            End Try
            Me.Enabled = True
        End Sub
    
        Private Sub ButTOPMOST_Click(sender As Object, e As EventArgs) Handles ButTOPMOST.Click
            Me.TopMost = Not Me.TopMost
            If Me.TopMost Then
                ButTOPMOST.Text = "^ Top Most ^"
            Else
                ButTOPMOST.Text = "_ Top Most _"
            End If
        End Sub
    
    End Class
    
    nel form devi inserire una label: LabAREA
    tre bottoni: ButENGLISH, ButITALIANO, ButTOPMOST
    una RichTextBox: RichTextBox1
    una TextBox: TexNOMEFILES

    Guarda l'immagine: Progettazione

    La label: LabArea è quella che ha il BackColor trasparente e ti farà vedere il desktop.
    Dovrai anche mettere tutti gli ancoraggi per fare in modo che al ridimensionamento gli strumenti si adeguino di conseguenza.

    Il programma salva nel percorso dell'eseguibile una BMP e un TXT.

    Se hai dubbi, magari ho dimenticato di spiegare qualcosa che do per scontato, chiedi.
    Se non comprendi il funzionamento del codice, chiedi.
    Allegati:
    29370_8343fc8baf30dc8a3f3c0dd06b09c96a.jpg
    29370_8343fc8baf30dc8a3f3c0dd06b09c96a.jpg

    29370_5c9c74ea9c880ec6a050be0a7d9aeb07.jpg
    29370_5c9c74ea9c880ec6a050be0a7d9aeb07.jpg

    29370_97e747dfd946952fff5717696622a066.jpg
    29370_97e747dfd946952fff5717696622a066.jpg
  • Re: Catturare del testo con textbox trasparente

    Ok ti ringrazio molto del impegno che hai messo per fare il tutto. ora ho sufficiente materiale per lavorare.
Devi accedere o registrarti per scrivere nel forum
22 risposte