In questo scenario, ABBYY FineReader Engine viene utilizzato per leggere i Barcode. I Barcode possono dover essere letti, ad esempio, ai fini della separazione automatica dei documenti, dell’elaborazione dei documenti da parte di un sistema di Document Management o dell’indicizzazione e classificazione dei documenti.Questo scenario può essere utilizzato come parte di altri scenari. Ad esempio, i documenti acquisiti con scanner di produzione ad alta velocità possono essere separati tramite Barcode, oppure i documenti preparati per l’archiviazione a lungo termine possono essere inseriti in sistemi di archiviazione e Document Management in base ai valori dei relativi Barcode.Durante l’estrazione dei Barcode dai testi, il sistema può rilevare tutti i Barcode oppure solo quelli di un determinato tipo con un determinato valore. Il sistema può acquisire il valore di un Barcode e calcolarne il checksum. Per ottenere i risultati migliori e più rapidi dal riconoscimento dei Barcode:
Utilizzare immagini a colori con una risoluzione ottimale di 300 dpi.
Regolare la velocità di riconoscimento utilizzando i profili (per maggiori dettagli, vedere Working with Profiles).
I valori dei Barcode riconosciuti possono essere salvati nei formati più adatti all’ulteriore elaborazione, ad esempio in TXT.
Gli esempi di codice forniti in questa sezione sono specifici per Windows.
Di seguito viene fornita una descrizione dettagliata del metodo consigliato per utilizzare ABBYY FineReader Engine 12 in questo scenario. Il metodo proposto usa impostazioni di elaborazione considerate le più adatte a questo scenario.
Passaggio 1. Caricare ABBYY FineReader Engine
Per iniziare a lavorare con ABBYY FineReader Engine, è necessario creare l’oggetto Engine. L’oggetto Engine è l’oggetto di livello più alto nella gerarchia degli oggetti di ABBYY FineReader Engine e fornisce varie impostazioni globali, alcuni metodi di elaborazione e metodi per la creazione degli altri oggetti.Per creare l’oggetto Engine, è possibile utilizzare la funzione InitializeEngine. Vedere anche altri modi per caricare l’oggetto Engine (Win).
// Inizializzare queste variabili con il percorso di FREngine.dll, il Customer Project ID di FineReader Engine,// e, se applicabile, il percorso del token della licenza online e la password della licenza onlinewchar_t* FreDllPath;wchar_t* CustomerProjectId;wchar_t* LicensePath; // se non si utilizza una licenza online, assegnare stringhe vuote a queste variabiliwchar_t* LicensePassword;// HANDLE per FREngine.dllstatic HMODULE libraryHandle = 0;// Oggetto globale FineReader EngineFREngine::IEnginePtr Engine;void LoadFREngine(){ if( Engine != 0 ) { // Già caricato return; } // Primo passaggio: caricare FREngine.dll if( libraryHandle == 0 ) { libraryHandle = LoadLibraryEx( FreDllPath, 0, LOAD_WITH_ALTERED_SEARCH_PATH ); if( libraryHandle == 0 ) { throw L"Errore durante il caricamento di ABBYY FineReader Engine"; } } // Secondo passaggio: ottenere l'oggetto Engine typedef HRESULT ( STDAPICALLTYPE* InitializeEngineFunc )( BSTR, BSTR, BSTR, BSTR, BSTR, VARIANT_BOOL, FREngine::IEngine** ); InitializeEngineFunc pInitializeEngine = ( InitializeEngineFunc )GetProcAddress( libraryHandle, "InitializeEngine" ); if( pInitializeEngine == 0 || pInitializeEngine( CustomerProjectId, LicensePath, LicensePassword, L"", L"", VARIANT_FALSE, &Engine ) != S_OK ) { UnloadFREngine(); throw L"Errore durante il caricamento di ABBYY FineReader Engine"; }}
Passaggio 2. Caricamento delle impostazioni per lo scenario
Le impostazioni più adatte possono essere selezionate utilizzando il metodo LoadPredefinedProfile dell’oggetto Engine. Questo metodo accetta come parametro di input il nome del profilo di impostazioni da usare. Per ulteriori informazioni sui profili, vedere Working with Profiles.ABBYY FineReader Engine supporta 2 varianti di impostazioni per questo scenario:
Nome del profilo
Descrizione
BarcodeRecognition_Accuracy
Estrae solo i Barcode (testi, immagini o tabelle non vengono rilevati). Le impostazioni sono state ottimizzate per la precisione. <Warning> Questo profilo richiede il modulo Barcode Autolocation disponibile nella licenza. </Warning>
BarcodeRecognition_Speed
Estrae solo i Barcode (testi, immagini o tabelle non vengono rilevati). Le impostazioni sono state ottimizzate per la velocità di elaborazione. <Warning> Questo profilo richiede il modulo Barcode Autolocation disponibile nella licenza. </Warning>
// Carica un profilo predefinitoEngine->LoadPredefinedProfile( L"BarcodeRecognition_Speed" );
Se si desidera modificare le impostazioni usate per l’elaborazione, utilizzare gli oggetti Parameter corrispondenti. Per ulteriori informazioni, vedere la sezione Additional optimization riportata di seguito.
Passaggio 3. Caricamento e preelaborazione delle immagini
ABBYY FineReader Engine mette a disposizione un oggetto FRDocument per elaborare documenti multipagina. Per caricare e preelaborare le immagini di un documento, è necessario creare l’oggetto FRDocument e aggiungervi le immagini. È possibile eseguire una delle seguenti operazioni:
Creare un oggetto FRDocument utilizzando il metodo CreateFRDocumentFromImage dell’oggetto Engine. Questo metodo crea un oggetto FRDocument e carica le immagini da un file specificato.
// Apre un file immagine e crea l'oggetto FRDocumentFREngine::IFRDocumentPtr frDocument = Engine->CreateFRDocumentFromImage( L"C:\\MyImage.tif", 0 );
Passaggio 4. Estrazione dei Barcode
Se è caricato il profilo BarcodeRecognition, puoi usare il metodo Process dell’oggetto FRDocument per estrarre solo i Barcode. In questo caso, ABBYY FineReader Engine rileva solo i blocchi contenenti Barcode. Non vengono rilevati altri blocchi. È possibile accedere ai blocchi di Barcode riconosciuti tramite l’oggetto Layout, che è un sotto-oggetto dell’oggetto FRPage che rappresenta una pagina del documento.Per leggere Barcode di un tipo specifico, specifica i parametri appropriati dell’oggetto BarcodeParams e passa l’oggetto BarcodeParams come parametro a una delle funzioni sopra indicate.
// Se il profilo BarcodeRecognition è caricato,// non è necessario passare parametri aggiuntivi al metodo di elaborazione,// se i Barcode sono conformi alle specifichefrDocument.Process( null );// Se devi leggere Barcode di un tipo specifico// Crea un oggetto DocumentProcessingParamsFREngine.IDocumentProcessingParams dpp = engine.CreateDocumentProcessingParams();// Specifica i parametri necessaridpp.PageProcessingParams.PageAnalysisParams.BarcodeParams.Type = ( int )FREngine.BarcodeTypeEnum.BT_Code39;// Ora riconosci i Barcode con questi parametrifrDocument.Process( dpp );
// Se il profilo BarcodeRecognition è caricato,// non è necessario passare parametri aggiuntivi al metodo di elaborazione,// se i Barcode sono conformi alle specifichefrDocument->Process( 0 );// Se devi leggere Barcode di un tipo specifico// Crea un oggetto DocumentProcessingParamsFREngine::IDocumentProcessingParamsPtr params = Engine->CreateDocumentProcessingParams();// Specifica i parametri necessariparams->PageProcessingParams->PageAnalysisParams->BarcodeParams->Type = FREngine::BT_Code39;// Ora riconosci i Barcode con questi parametrifrDocument->Process( params );
Passaggio 5. Esportazione dei dati riconosciuti
Per salvare i valori dei Barcode riconosciuti in un file, puoi usare il metodo Export dell’oggetto FRDocument, specificando la costante FileExportFormatEnum come uno dei parametri. Ad esempio, in questo scenario è possibile esportare in formato TXT. Puoi modificare i parametri di esportazione predefiniti usando il corrispondente oggetto di esportazione. Per ulteriori informazioni, vedi Ulteriore ottimizzazione per attività specifiche qui sotto.Dopo aver terminato di lavorare con l’oggetto FRDocument, rilascia tutte le risorse usate da questo oggetto. Usa il metodo IFRDocument::Close.
// Salva i Barcode riconosciuti in un formato qualsiasi (ad esempio TXT)frDocument.Export( "C:\\barcodes.txt", FREngine.FileExportFormatEnum.FEF_TextUnicodeDefaults, null );// Rilascia l'oggetto FRDocumentfrDocument.Close();
// Salva i Barcode riconosciuti in un formato qualsiasi (ad esempio TXT)frDocument->Export( L"C:\\barcodes.txt", FREngine::FEF_TextUnicodeDefaults, 0 );// Rilascia l'oggetto FRDocumentfrDocument->Close();
Passaggio 6. Scaricamento di ABBYY FineReader Engine
Dopo aver terminato il lavoro con ABBYY FineReader Engine, è necessario scaricare l’oggetto Engine. A tale scopo, utilizzare la funzione esportata DeinitializeEngine.
Puoi usare il file FREngineDistribution.csv per creare automaticamente un elenco dei file necessari al funzionamento della tua applicazione. Per l’elaborazione in questo scenario, seleziona nella colonna 5 (RequiredByModule) i seguenti valori:CoreCore.ResourcesOpeningOpening, ProcessingProcessingProcessing.OCRProcessing.OCR, Processing.ICRProcessing.OCR.NaturalLanguagesProcessing.OCR.NaturalLanguages, Processing.ICR.NaturalLanguagesExportExport, ProcessingSe modifichi lo scenario standard, aggiorna di conseguenza i moduli richiesti. Devi anche specificare le lingue dell’interfaccia, le lingue di riconoscimento e le eventuali funzionalità aggiuntive utilizzate dalla tua applicazione (ad esempio, Opening.PDF se devi aprire file PDF oppure Processing.OCR.CJK se devi riconoscere testi nelle lingue CJK). Per ulteriori dettagli, vedi Working with the FREngineDistribution.csv File.
Queste sono le sezioni del file della Guida in cui puoi trovare ulteriori informazioni sulla configurazione dei parametri per le varie fasi di elaborazione:
Estrazione e lettura dei Barcode
Oggetto BarcodeParams Questo oggetto consente di configurare i parametri di analisi e lettura dei Barcode.
Riconoscimento dei Barcode Descrive i casi particolari del riconoscimento dei Barcode e fornisce suggerimenti per lavorare con i Barcode.
Tipi di Barcode L’elenco dei Barcode supportati in ABBYY FineReader Engine 12 e le relative brevi descrizioni.
Oggetto FRDocument Oltre ai valori dei Barcode, potrebbe essere necessario estrarre altre informazioni contenute nel documento. In questo caso, puoi usare i metodi dell’oggetto FRDocument.
Oggetto PageProcessingParams Questo oggetto consente di configurare i parametri di analisi e riconoscimento per l’intero documento. Usandolo, puoi specificare se riconoscere i valori dei Barcode. I parametri di lettura dei Barcode sono accessibili tramite le proprietà BarcodeParams e DetectBarcodes del sotto-oggetto PageAnalysisParams.
Lavorare con Layout e Blocks Puoi anche contrassegnare manualmente i blocchi Barcode e specificarne i parametri di analisi e lettura. Questa sezione fornisce informazioni dettagliate sull’uso dei blocchi.
Lavorare con i valori dei Barcode riconosciuti
Oggetto BarcodeBlock Le proprietà Text e BarcodeText di questo oggetto contengono il valore del Barcode ottenuto dal riconoscimento. Le altre proprietà di questo oggetto possono essere usate per ottenere il tipo di Barcode, il suo orientamento e altri parametri.