Gli esempi C# sono applicabili solo a FRE per Windows.
Rilevamento dei segni di spunta nell’immagine
Codice C#
Codice C#
- Riconoscimento di un gruppo di segni di spunta
- Riconoscimento di un singolo segno di spunta
- Apprendimento del riconoscimento di segni di spunta personalizzati
Riconoscimento di un gruppo di segni di spunta
- impostare correttamente il tipo di segno di spunta, perché i segni di tipo CMT_Circle e CMT_Square hanno un bordo nero, che deve essere preso in considerazione nel calcolo della percentuale;
- specificare con precisione la regione del segno di spunta, poiché la percentuale di nero viene calcolata sull’intera regione e, se la regione include aree irrilevanti, la stima potrebbe peggiorare.
- Creare un oggetto FRDocument a partire da un’immagine contenente un gruppo di segni di spunta. Ad esempio, è possibile utilizzare il metodo CreateFRDocumentFromImage dell’oggetto Engine.
- Ottenere la pagina con l’immagine dei segni di spunta dalla raccolta di pagine del documento (IFRDocument::Pages) — utilizzare le proprietà e i metodi della raccolta FRPages.
- Ottenere l’oggetto Layout corrispondente a questa pagina tramite la proprietà IFRPage::Layout.
- Per ogni gruppo di segni di spunta:
- Creare un oggetto Region utilizzando il metodo IEngine::CreateRegion e aggiungervi rettangoli tramite il metodo IRegion::AddRect.
- Creare un oggetto Block del tipo gruppo di segni di spunta e aggiungerlo alla raccolta dei blocchi del layout (ILayout::Blocks) utilizzando il metodo ILayoutBlocks::AddNew (utilizzare la costante BT_CheckmarkGroup e l’oggetto Region creato come parametri di input. Il metodo richiede anche l’indice del blocco nel layout come terzo parametro di input).
- Ottenere l’oggetto CheckmarkGroup (utilizzare il metodo IBlock::GetAsCheckmarkGroup).
- Per ogni segno di spunta nel gruppo:
- Creare l’oggetto Region utilizzando il metodo IEngine::CreateRegion e aggiungervi dei rettangoli con il metodo IRegion::AddRect.
- Creare un nuovo blocco segno di spunta nel gruppo utilizzando il metodo ICheckmarkGroup::AddNew (usare l’oggetto Region creato come parametro di input).
- Ottenere l’oggetto CheckmarkBlock (utilizzando il metodo IBlock::GetAsCheckmarkBlock) e impostare i parametri richiesti (CheckmarkType, IsCorrectionEnabled).
- Impostare i parametri necessari del gruppo di segni di spunta (MinimumCheckedInGroup, MaximumCheckedInGroup).
- Per riconoscere i segni di spunta, utilizzare uno dei metodi disponibili che eseguono il riconoscimento, ad esempio IFRPage::Recognize, IFRPage::RecognizeBlocks, IFRDocument::Recognize, IFRDocument::RecognizePages, ecc.
Codice C#
Codice C#
Riconoscimento di un singolo segno di spunta
- Crea un oggetto FRDocument da un’immagine contenente un segno di spunta. Ad esempio, puoi usare il metodo CreateFRDocumentFromImage dell’oggetto Engine.
- Recupera la pagina con l’immagine dei segni di spunta dalla raccolta di pagine del documento (IFRDocument::Pages) usando le proprietà e i metodi della raccolta FRPages.
- Recupera l’oggetto Layout corrispondente a questa pagina tramite la proprietà IFRPage::Layout.
- Crea l’oggetto Region usando il metodo IEngine::CreateRegion e aggiungivi dei rettangoli usando il metodo IRegion::AddRect.
- Crea un oggetto Block di tipo segno di spunta e aggiungilo alla raccolta dei blocchi del layout (ILayout::Blocks) usando il metodo ILayoutBlocks::AddNew (usa la costante BT_Checkmark e l’oggetto Region creato come parametri di input).
- Ottieni l’oggetto CheckmarkBlock (usa il metodo IBlock::GetAsCheckmarkBlock) e imposta i parametri richiesti (CheckmarkType, IsCorrectionEnabled).
- Per riconoscere il segno di spunta, usa uno dei metodi di riconoscimento disponibili, ad esempio IFRPage::Recognize, IFRPage::RecognizeBlocks, IFRDocument::Recognize, IFRDocument::RecognizePages, ecc.
Codice C#
Codice C#
Apprendere il riconoscimento di segni di spunta di tipo personalizzato
- Trovare un’immagine con alcuni segni di spunta non selezionati del tipo che si desidera riconoscere. Può trattarsi dell’immagine di un modulo vuoto che contiene tali segni di spunta.
- Creare un oggetto FRDocument da questa immagine. Ad esempio, è possibile usare il metodo CreateFRDocumentFromImage dell’oggetto Engine.
- Ottenere la pagina con l’immagine dei segni di spunta dalla raccolta di pagine del documento (IFRDocument::Pages) — usare le proprietà e i metodi della raccolta FRPages.
- Ottenere l’oggetto Layout corrispondente a questa pagina tramite la proprietà IFRPage::Layout.
- Specificare la regione e il tipo di ciascun blocco di segno di spunta nella pagina:
- Creare l’oggetto Region usando il metodo IEngine::CreateRegion e aggiungervi i rettangoli della regione del segno di spunta usando il metodo IRegion::AddRect.
- Creare un oggetto Block di tipo segno di spunta e aggiungerlo alla raccolta dei blocchi di layout (ILayout::Blocks) usando il metodo ILayoutBlocks::AddNew (usare la costante BT_Checkmark e l’oggetto Region creato come parametri di input).
- Ottenere l’oggetto CheckmarkBlock (usare il metodo IBlock::GetAsCheckmarkBlock) e impostare la proprietà CheckmarkType su CMT_Custom.
- Addestra FineReader Engine a riconoscere questo tipo di segni di spunta: chiama il metodo LearnCheckmarks dell’oggetto FRPage.
- Di conseguenza, la proprietà TrainingData dell’oggetto CheckmarkBlock creato prima dell’addestramento conterrà informazioni sul tipo di segno di spunta personalizzato. Queste informazioni potranno quindi essere usate per riconoscere altri segni di spunta dello stesso tipo. Puoi salvarle in un file o in memoria usando il metodo SaveToMemory (solo Windows) oppure il metodo SaveToFile dell’oggetto CheckmarkTrainingData.
- Crea oggetti FRDocument a partire dalle immagini che contengono segni di spunta di questo tipo, specifica i blocchi di segni di spunta nelle pagine e imposta il tipo di segno di spunta su CMT_Custom. La procedura è descritta nei passaggi da 2 a 5.
- Inizializza la proprietà TrainingData di ciascun oggetto CheckmarkBlock con l’oggetto CheckmarkTrainingData ottenuto durante l’addestramento. Per esempio, puoi copiare l’oggetto usando il metodo CopyFrom oppure caricarlo da un file o dalla memoria usando il metodo LoadFromMemory (solo Windows) oppure il metodo LoadFromFile dell’oggetto CheckmarkTrainingData.
- Chiama uno qualsiasi dei metodi di riconoscimento dell’oggetto FRDocument o FRPage, ad esempio il metodo IFRDocument::Recognize.
- Le proprietà BlackThreshold e SuspiciousDistance dell’oggetto CheckmarkBlock consentono di perfezionare ulteriormente le impostazioni se i risultati del riconoscimento non sono soddisfacenti. Dopo l’addestramento, i valori predefiniti di queste proprietà vengono sostituiti con valori che dovrebbero funzionare nella maggior parte dei casi. Quando carichi l’oggetto CheckmarkTrainingData per un blocco di segni di spunta, vengono caricati anche i valori di queste proprietà. Puoi sperimentare modificando i valori di queste proprietà e riconoscendo di nuovo i segni di spunta (ripetendo il passaggio 10) e, una volta trovata la configurazione migliore, salvare nuovamente l’oggetto CheckmarkTrainingData e usare il nuovo oggetto per riconoscere i segni di spunta del tuo tipo personalizzato.
