- Creazione di un database di classificazione
- Classificazione dei documenti
Implementazione dello scenario
Gli esempi di codice forniti in questo argomento sono specifici per Windows.
Passaggio 1. Caricamento di ABBYY FineReader Engine
Passaggio 1. Caricamento di ABBYY FineReader Engine
Per iniziare a usare ABBYY FineReader Engine, è necessario creare l’oggetto Engine. L’oggetto Engine è l’oggetto principale nella gerarchia degli oggetti di ABBYY FineReader Engine e fornisce diverse impostazioni globali, alcuni metodi di elaborazione e i metodi per creare gli altri oggetti.Per creare l’oggetto Engine, è possibile usare la funzione InitializeEngine. Vedi anche altri modi per caricare l’oggetto Engine (Win).
C#
Passaggio 2. Creazione di ClassificationEngine
Passaggio 2. Creazione di ClassificationEngine
Crea un oggetto ClassificationEngine, che funge da factory per gli altri oggetti della Classification API. Usa il metodo CreateClassificationEngine dell’oggetto Engine.
C#
Passaggio 3. Preparazione degli oggetti di classificazione
Passaggio 3. Preparazione degli oggetti di classificazione
I metodi di addestramento e classificazione utilizzano uno speciale tipo di oggetto creato a partire da un documento o da una pagina: ClassificationObject, che contiene tutte le informazioni rilevanti per la classificazione.Per preparare un documento da utilizzare in uno scenario di classificazione, procedi come segue:
- Carica le immagini da elaborare. Esistono diversi modi per farlo: ad esempio, puoi creare l’oggetto FRDocument tramite il metodo CreateFRDocument dell’oggetto Engine, quindi aggiungere le immagini all’oggetto FRDocument creato da file usando il metodo AddImageFile.
- Se intendi addestrare o usare un classificatore del tipo che tiene conto delle caratteristiche del testo (CT_Combined, CT_Text), esegui prima il riconoscimento del documento usando un metodo appropriato. Useremo i metodi Analyze e Recognize dell’oggetto FRDocument. La sintesi del documento non è necessaria per la classificazione.
Sebbene l’elaborazione parallela non sia supportata per la classificazione in sé, potrebbe essere necessaria per il riconoscimento preliminare dei documenti in Windows e Linux. Se il numero di documenti da classificare è elevato, consigliamo di usare Batch Processor o altri metodi di elaborazione parallela descritti in Parallel Processing with ABBYY FineReader Engine.
- Usa il metodo CreateObjectFromDocument dell’oggetto ClassificationEngine per creare un ClassificationObject contenente le informazioni della prima pagina del documento. Se devi usare un’altra pagina del documento, chiama il metodo CreateObjectFromPage.
- La proprietà Description di ClassificationObject è vuota per impostazione predefinita. Specifica questa proprietà se hai bisogno di una descrizione appropriata.
In alcuni casi, il documento o la pagina riconosciuti possono comunque non contenere alcun testo riconosciuto (ad esempio, se per errore è stata usata una pagina vuota). In questo caso, il ClassificationObject non può essere usato per i classificatori che richiedono caratteristiche del testo. Per un’ulteriore verifica, puoi usare la relativa proprietà SuitableClassifiers.
C#
Passaggio 4. Creazione di un set di dati di addestramento
Passaggio 4. Creazione di un set di dati di addestramento
Per addestrare un classificatore in grado di distinguere tra diversi tipi di documenti, è necessario un set di dati categorizzato che contenga esempi di ciascun tipo. Usa l’oggetto TrainingData per popolare e gestire questo set di dati:
- Crea un oggetto vuoto con il metodo CreateTrainingData dell’oggetto ClassificationEngine.
- Accedi alla raccolta di categorie tramite la proprietà Categories.
- Usa più volte il metodo AddNew dell’oggetto Categories per aggiungere una categoria per ciascun tipo di documento che intendi classificare. Il metodo richiede come parametro di input una string con l’etichetta della categoria. L’etichetta verrà restituita dai metodi di classificazione, quindi deve essere univoca all’interno dell’insieme di categorie.
- Per ogni oggetto Category appena aggiunto, apri la raccolta di oggetti di classificazione tramite la proprietà Objects. Con il metodo IClassificationObjects::Add, aggiungi gli oggetti di classificazione che corrispondono a questa categoria.
Nessuna categoria può rimanere vuota. Per ovvie ragioni, per l’addestramento sono necessarie almeno due categorie. - Una volta configurato il set di dati di addestramento, puoi salvarlo in un file su disco per utilizzarlo in seguito, ad esempio se l’accuratezza del modello addestrato si rivela insoddisfacente e desideri aggiungere o correggere alcuni dati per migliorarne la qualità. L’oggetto TrainingData mette a disposizione il metodo SaveToFile.
C#
Passaggio 5. Addestramento del modello di classificazione
Passaggio 5. Addestramento del modello di classificazione
La funzionalità per l’addestramento del modello è fornita dall’oggetto Trainer. Per crearlo, utilizzare il metodo CreateTrainer dell’oggetto ClassificationEngine.Contiene tutte le impostazioni per il tipo di classificatore e la procedura di addestramento, nei due sotto-oggetti TrainingParams e ValidationParams. Determinare le impostazioni necessarie e modificare le proprietà corrispondenti:La proprietà ITrainingResult::Model consente di accedere al modello di classificazione addestrato. È possibile salvarlo in un file tramite il metodo SaveToFile oppure utilizzarlo direttamente per classificare alcuni documenti (procedere al Passaggio 6).
- Il tipo di classificatore (ITrainingParams::ClassifierType). Questa impostazione determina quali caratteristiche del documento vengono prese in considerazione per l’assegnazione di una categoria: le caratteristiche dell’immagine, il contenuto del testo riconosciuto o entrambi. Per selezionare un tipo che utilizza il contenuto del testo, è necessario assicurarsi che tutti gli oggetti di classificazione nel set di dati di training siano stati creati a partire da documenti precedentemente riconosciuti.
- La modalità di addestramento (ITrainingParams::TrainingMode). Questa impostazione determina se il processo di addestramento debba privilegiare un’elevata precisione (quanti degli elementi selezionati sono corretti), un recall elevato (quanti degli elementi corretti vengono selezionati) oppure un equilibrio tra i due.
- Se utilizzare la convalida incrociata k-fold (IValidationParams::ShouldPerformValidation). Consigliamo di utilizzare la convalida incrociata quando il campione di addestramento non è grande, poiché consente di addestrare più modelli su partizioni diverse dello stesso campione e selezionare il migliore. Se si dispone di una grande quantità di dati categorizzati, può essere preferibile disattivare la convalida, addestrare il modello sull’intero campione di addestramento e quindi utilizzare i metodi di classificazione (Passaggio 6) per testare il modello su un altro campione, calcolando dal proprio lato gli indicatori di prestazione.
- I parametri della convalida incrociata k-fold: il numero di parti in cui viene suddiviso il campione di addestramento (IValidationParams::FoldsCount) e il numero di iterazioni (IValidationParams::RepeatCount). Si noti che il numero di oggetti richiesto nel set di addestramento a ogni iterazione deve essere almeno 4 per il classificatore di testo e almeno 8 per il classificatore combinato. Assicurarsi che il campione di addestramento contenga un numero sufficiente di oggetti.
L’addestramento del modello e la classificazione verranno eseguiti in modalità sequenziale su Linux e Windows, indipendentemente dal valore di IMultiProcessingParams::MultiProcessingMode.
C#
Passaggio 6. Classificazione dei documenti
Passaggio 6. Classificazione dei documenti
Per utilizzare il modello addestrato per la classificazione:
- Se il modello non è attualmente caricato, chiama il metodo CreateModelFromFile dell’oggetto ClassificationEngine per caricarlo da un file su disco.
- Prepara gli oggetti di classificazione a partire dai documenti che devi classificare, come descritto nel Passaggio 3.
- Per ogni oggetto di classificazione, chiama il metodo Classify dell’oggetto Model, passando ClassificationObject come parametro di input. Il metodo restituisce una raccolta di oggetti ClassificationResult, ciascuno dei quali contiene l’etichetta della categoria e la relativa probabilità. I risultati sono ordinati per probabilità dal più alto al più basso. Recupera il risultato e verifica che il livello di probabilità sia per te accettabile.
Se il classificatore non è in grado di assegnare una categoria, viene restituito null invece della raccolta di risultati.
L’addestramento del modello e la classificazione vengono eseguiti in modalità sequenziale in Linux e Windows, indipendentemente dal valore di IMultiProcessingParams::MultiProcessingMode.
C#
Passaggio 7. Scaricamento di ABBYY FineReader Engine
Passaggio 7. Scaricamento di ABBYY FineReader Engine
Dopo aver terminato di lavorare con ABBYY FineReader Engine, devi scaricare l’oggetto Engine. Per farlo, utilizza la funzione esportata DeinitializeEngine.
C#
Risorse necessarie
Ottimizzazione aggiuntiva
- Caricamento di Engine - Solo per Windows
- Diversi modi per caricare l’oggetto Engine
Descrive in dettaglio i diversi modi per caricare l’oggetto Engine. - Utilizzo di ABBYY FineReader Engine in applicazioni server multithread
Illustra gli aspetti specifici dell’utilizzo di FineReader Engine nelle applicazioni server.
- Diversi modi per caricare l’oggetto Engine
- Riconoscimento - Per Linux e Windows
- Elaborazione parallela con ABBYY FineReader Engine
Per preparare rapidamente i documenti o le pagine riconosciuti per un classificatore con feature testuali, utilizza l’elaborazione parallela per il riconoscimento e poi disattiva il multiprocessing per la classificazione.
- Elaborazione parallela con ABBYY FineReader Engine
