Il risultato di questo scenario è una versione modificabile di un documento.In questo scenario, le immagini dei documenti vengono riconosciute mantenendo intatta tutta la formattazione originale e i dati vengono salvati in un formato di file modificabile. Di conseguenza, si ottengono versioni modificabili dei documenti, che possono essere facilmente controllate per correggere eventuali errori e modificate. Sarà inoltre possibile copiare tutto o parte del testo per riutilizzarlo.Un documento passa attraverso diverse fasi di elaborazione, che per alcuni aspetti differiscono leggermente dagli altri scenari comuni:
Pre-elaborazione di immagini o foto acquisite tramite scansione
Le immagini ottenute tramite uno scanner o una fotocamera digitale possono richiedere alcuni ritocchi prima di poter essere sottoposte al riconoscimento ottico. Ad esempio, le immagini con rumore o con linee di testo distorte richiederanno alcune correzioni affinché il riconoscimento ottico abbia esito positivo.
Riconoscimento con ripristino completo della struttura e della formattazione del documento
Durante il riconoscimento di un documento, vengono identificati vari elementi del layout (testo, tabelle, immagini, Separator, ecc.) del documento. Nel corso della sintesi del documento, viene ripristinata la struttura logica del documento, mentre la sintesi della pagina consente di ripristinare completamente la formattazione del documento (font, stili, ecc.).
Esportazione in un formato modificabile
Il documento riconosciuto viene salvato in un formato modificabile, come RTF o DOCX.
Gli esempi di codice forniti in questo argomento sono specifici per Windows.
Di seguito è riportata una descrizione dettagliata del metodo consigliato per utilizzare ABBYY FineReader Engine 12 per convertire i documenti. Il metodo proposto utilizza le impostazioni di elaborazione più adatte a questo scopo.
Passaggio 1. Caricamento di ABBYY FineReader Engine
Per iniziare a lavorare con ABBYY FineReader Engine, è necessario creare l’oggetto Engine. L’oggetto Engine è l’oggetto di livello superiore nella gerarchia degli oggetti di ABBYY FineReader Engine e fornisce varie impostazioni globali, alcuni metodi di elaborazione e metodi per creare gli 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
ABBYY FineReader Engine consente di caricare, tramite il metodo LoadPredefinedProfile dell’oggetto Engine, tutte le impostazioni più adatte a questo scenario. Questo metodo riceve il nome del profilo come parametro di input. Per ulteriori informazioni, vedere Uso dei profili.ABBYY FineReader Engine supporta 2 set di impostazioni per questo scenario:
Nome del profilo
Descrizione
DocumentConversion_Accuracy
Le impostazioni sono state ottimizzate per la precisione:
Qualità ottimale. Abilita il rilevamento dello stile dei caratteri e la sintesi completa della struttura logica del documento.
DocumentConversion_Normal
Le impostazioni sono state ottimizzate per la velocità di elaborazione:
Qualità ottimale. Abilita il rilevamento dello stile dei caratteri e la sintesi completa della struttura logica del documento.
L’orientamento dell’immagine non viene corretto.
Il processo di analisi del documento è accelerato.
// Carica un profilo predefinitoEngine->LoadPredefinedProfile( L"DocumentConversion_Normal" );
Se si desidera modificare le impostazioni di elaborazione, utilizzare gli oggetti parametro appropriati. Per ulteriori informazioni, vedere Ottimizzazione aggiuntiva per attività specifiche di seguito.
Passaggio 3. Caricamento e pre-elaborazione delle immagini
ABBYY FineReader Engine mette a disposizione l’oggetto FRDocument, che consente di elaborare documenti multipagina. L’uso di questo oggetto consente di preservare l’organizzazione logica del documento, mantenendo il testo originale, le colonne, i font, gli stili e così via.Per caricare e pre-elaborare le immagini di un singolo documento, è necessario creare l’oggetto FRDocument e aggiungervi le immagini. È possibile eseguire una delle seguenti operazioni:
Creare l’oggetto FRDocument utilizzando il metodo CreateFRDocumentFromImage dell’oggetto Engine. Questo metodo crea l’oggetto FRDocument e carica le immagini dal file specificato.
// Crea l'oggetto FRDocument da un file immagineFREngine::IFRDocumentPtr frDocument = Engine->CreateFRDocumentFromImage( L"C:\\MyImage.tif", 0 );
La pre-elaborazione delle immagini con il profilo DocumentConversion_Normal caricato non include il rilevamento dell’orientamento. Se si desidera che l’orientamento dell’immagine venga rilevato automaticamente, sarà necessario configurare parametri aggiuntivi e passare l’oggetto corrispondente alla funzione di pre-elaborazione. Per ulteriori informazioni, vedere Ottimizzazione aggiuntiva per attività specifiche di seguito.
Passaggio 4. Riconoscimento del documento
Per riconoscere un documento, consigliamo di utilizzare i metodi di analisi e riconoscimento dell’oggetto FRDocument. Questo oggetto fornisce un’intera gamma di metodi per l’analisi, il riconoscimento e la sintesi del documento. Il metodo più pratico, che consente di eseguire analisi, riconoscimento e sintesi del documento in un’unica operazione, è Process. Inoltre, sfrutta nel modo più efficiente le funzionalità di elaborazione simultanea dei sistemi multiprocessore e multicore. Tuttavia, puoi anche eseguire in sequenza la pre-elaborazione, l’analisi, il riconoscimento e la sintesi utilizzando i metodi Preprocess, Analyze, Recognize e Synthesize.
// Analizza, riconosce e sintetizza il documento// Non sono necessari parametri aggiuntivi perché sono impostati dal profilo di elaborazionefrDocument.Process( null );
// Analizza, riconosce e sintetizza il documento// Non sono necessari parametri aggiuntivi perché sono impostati dal profilo di elaborazionefrDocument->Process( 0 );
Passaggio 5. Esportazione del documento
Per salvare un documento riconosciuto, puoi utilizzare il metodo Export dell’oggetto FRDocument, specificando la costante FileExportFormatEnum come uno dei parametri. Puoi modificare i parametri predefiniti di esportazione usando l’oggetto di esportazione corrispondente. Per ulteriori informazioni, consulta Ottimizzazione aggiuntiva per attività specifiche più avanti.Dopo aver terminato il lavoro con l’oggetto FRDocument, rilascia tutte le risorse utilizzate da questo oggetto. Usa il metodo IFRDocument::Close.
// Salva il documento riconosciuto in un formato modificabile (ad esempio, RTF)frDocument.Export( "C:\\MyText.rtf", FREngine.FileExportFormatEnum.FEF_RTF, null );// Rilascia l'oggetto FRDocumentfrDocument.Close();
// Salva il documento riconosciuto in un formato modificabile (ad esempio, RTF)frDocument->Export( L"C:\\MyText.rtf", FREngine::FEF_RTF, 0 );// Rilascia l'oggetto FRDocumentfrDocument->Close();
Passaggio 6. Scaricamento di ABBYY FineReader Engine
Dopo aver finito di lavorare 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, adegua di conseguenza i moduli richiesti. Devi anche specificare le lingue dell’interfaccia, le lingue di riconoscimento e tutte le funzionalità aggiuntive usate dalla tua applicazione (come, ad esempio, Opening.PDF se devi aprire file PDF, oppure Processing.OCR.CJK se devi riconoscere testi nelle lingue CJK). Per ulteriori dettagli, consulta Working with the FREngineDistribution.csv File.
Di seguito è riportata una panoramica degli argomenti della Guida che contengono informazioni aggiuntive sulla personalizzazione delle impostazioni nelle diverse fasi della conversione di un documento in un formato modificabile:
Scansione - Solo per Windows
Scansione Descrizione dello scenario di ABBYY FineReader Engine per la scansione di documenti.
Oggetto PageProcessingParams Questo oggetto consente di personalizzare i parametri di analisi e riconoscimento. Con questo oggetto, è possibile specificare quali caratteristiche dell’immagine e del testo devono essere rilevate (immagine invertita, orientamento, barcode, lingua di riconoscimento, margine di errore del riconoscimento).
Oggetto SynthesisParamsForPage Questo oggetto include i parametri responsabili del ripristino della formattazione di una pagina durante la sintesi.
Oggetto SynthesisParamsForDocument Questo oggetto consente di personalizzare la sintesi del documento: il ripristino della sua struttura e della sua formattazione.
Oggetto MultiProcessingParams - Implementato per Linux e Windows L’elaborazione simultanea può essere utile quando si elabora un numero elevato di immagini. In questo caso, il carico di elaborazione verrà distribuito tra i core del processore durante l’apertura e la pre-elaborazione delle immagini, l’analisi del layout, il riconoscimento e l’esportazione, rendendo possibile accelerare l’elaborazione. Le modalità di elaborazione (simultanea o consecutiva) vengono impostate tramite la proprietà MultiProcessingMode. La proprietà RecognitionProcessesCount controlla il numero di processi che possono essere avviati.