Vai al contenuto principale

Gestione delle licenze e distribuzione

ABBYY FineReader Engine 12 include un’apposita utility di installazione per la distribuzione. Con questa utility è possibile installare la libreria ABBYY FineReader Engine su una workstation in modalità automatica dalla riga di comando. È anche possibile installare la libreria manualmente copiando i file necessari. Vedere Distribuzione di applicazioni che utilizzano la libreria ABBYY FineReader Engine.
Tutte le licenze di un progetto condividono lo stesso Customer Project ID, richiesto dalle funzioni che inizializzano la libreria. La Runtime License dell’utente finale e la Developer License dello sviluppatore software devono corrispondere al Customer Project ID passato a queste funzioni.Vedere anche Distribuzione di applicazioni che utilizzano la libreria ABBYY FineReader Engine.
È necessario attivare una Runtime License sulla workstation. Vedere Attivazione della libreria ABBYY FineReader Engine con la Runtime License.
  • File necessari per il funzionamento dei moduli supportati dall’applicazione.
  • File contrassegnati come “obbligatori” nella tabella della sezione ABBYY FineReader Engine Distribution Kit. Si tratta dei moduli di sistema e dei database principali di riconoscimento.
  • Database di riconoscimento per testo scritto a mano/in stampatello, se necessario.
  • File di risorse per le lingue dell’interfaccia che verranno utilizzate nell’applicazione.
  • File di supporto del dizionario per le lingue di riconoscimento supportate dall’applicazione. Se tra le lingue di riconoscimento sono incluse lingue con alfabeto latino, assicurarsi di copiare i file Univers.amd e Univers.amm.
  • Moduli Windows per la scansione, risorse specifiche per la scansione e moduli Twain, se l’applicazione eseguirà la scansione tramite l’interfaccia di ABBYY FineReader Engine.
  • Moduli Windows Visual Components e relative risorse specifiche, se l’applicazione utilizza ABBYY FineReader Engine Visual Components. Registrare VisualComponents_dll utilizzando regsvr32.exe.
È inoltre possibile utilizzare il file FREngineDistribution.csv per creare automaticamente un elenco dei file necessari al funzionamento dell’applicazione.Vedere
No, non è necessario ed è anzi un modo corretto per limitare l’accesso completo per ‘Everyone’, così da impedire a utenti non autorizzati di apportare modifiche. Per il gruppo ‘Everyone’ è sufficiente il solo accesso in lettura.
Sono richieste autorizzazioni di controllo completo per le seguenti cartelle:
  • cartella %TEMP%
  • cartella %ProgramData%\ABBYY\SDK\12\FineReader Engine
  • cartella %ProgramData%\ABBYY\SDK\12\Licenses (obbligatoria per il server licenze, facoltativa per le workstation)
Tutti gli utenti che eseguono l’applicazione devono disporre delle autorizzazioni di lettura, esecuzione e scrittura per:
  • la cartella %ProgramData%\ABBYY.
I seguenti rami del registro devono essere accessibili dalla workstation:
  • “HKEY_CURRENT_USER\Software\ABBYY\SDK\12\FineReader Engine” — controllo completo
  • “HKEY_CURRENT_USER\Software\ABBYY\SDK\12” — controllo completo solo per l’installazione
  • “HKEY_LOCAL_MACHINE\Software\ABBYY\SDK\12” — controllo completo solo per l’installazione
Vedere Installazione della libreria ABBYY FineReader Engine.
Assicurati che la Runtime License corrisponda al Customer Project ID con cui è stata compilata l’applicazione. Se la licenza non corrisponde al Customer Project ID, l’applicazione non funzionerà.Il Customer Project ID viene passato ai metodi che caricano FineReader Engine come uno dei parametri di input. Assicurati che il Customer Project ID usato dai metodi sia corretto.Vedi anche Licensing, Distribution of Applications Which Use the ABBYY FineReader Engine Library.
Controlla i permessi della cartella %ProgramData%\ABBYY\SDK\12\Licenses con il seguente comando:
ls -l /var/lib/ABBYY/SDK/12 | grep Licenses
chmod 777 /var/lib/ABBYY/SDK/12/Licenses
Se il comando restituisce un valore diverso da drwxrwxrwx, significa che alla cartella %ProgramData%\ABBYY\SDK\12\Licenses mancano alcuni permessi.Per concedere autorizzazioni di accesso complete alla cartella %ProgramData%\ABBYY\SDK\12\Licenses, esegui il seguente comando:
Per poter usare metodi di elaborazione come IFRDocument::Process, ti serve una licenza che includa il modulo Processing. Se la tua licenza non lo supporta, puoi riconoscere solo i barcode; usa il metodo IFRPage::ExtractBarcodes.
Per poter usare metodi di elaborazione come IFRDocument::Process, ti serve una licenza che includa il modulo Processing. Se la tua licenza non lo supporta, puoi comunque riconoscere barcode e/o segni di spunta usando altri metodi:
Per eseguire ABBYY FineReader Engine in un container Docker, usa due container separati, uno con ABBYY FineReader Engine e uno con il Licensing Service.Vedi le istruzioni per questo scenario in Running ABBYY FineReader Engine 12 inside a Docker container.
Puoi eseguire la tua applicazione basata su ABBYY FineReader Engine in Azure Cloud Service o Azure App Service. Usa le istruzioni fornite in Running ABBYY FineReader Engine in Azure Services.
Domande sulle immagini
Usa i metodi dell’oggetto ImageDocument che migliorano la qualità dell’immagine. Questi metodi ti consentono di selezionare una regione dell’immagine su cui intervenire.
ABBYY FineReader Engine offre diversi modi per correggere la risoluzione dell’immagine:
  1. Dopo aver aperto l’immagine, usando il metodo ChangeResolution dell’oggetto ImageDocument.
    Puoi usare il metodo DetectResolution dell’oggetto FRPage per determinare il valore di risoluzione ottimale.
  2. Durante la fase di pre-elaborazione dell’immagine (che, per impostazione predefinita, è inclusa nella chiamata a qualsiasi metodo che esegua l’elaborazione completa dell’immagine), gestita dalla proprietà OverwriteResolutionMode dell’oggetto PagePreprocessingParams. La risoluzione può essere corretta automaticamente oppure impostata sul valore specificato nella proprietà ResolutionToOverwrite.
Per le immagini ottenute catturando lo schermo del computer, consigliamo di usare impostazioni pensate per l’estrazione del testo. Chiama il metodo LoadPredefinedProfile dell’oggetto Engine per caricare uno dei profili predefiniti:
  • TextExtraction_Accuracy — per estrarre testo dai documenti, ottimizzato per la massima accuratezza
  • TextExtraction_Speed — per estrarre testo dai documenti, ottimizzato per la velocità
La risoluzione dell’immagine ottenuta dallo screenshot deve essere impostata su 72 o 96 dpi (a seconda della risoluzione dello schermo).
Queste raccomandazioni si riferiscono alle immagini digitali create utilizzando il sistema operativo o un software in esecuzione sul computer. La risoluzione di una foto dello schermo scattata con un dispositivo esterno (ad esempio una fotocamera) dovrebbe essere compresa tra 200 e 300 dpi.
Vedi anche Uso dei profili.

Uso dell’oggetto Engine

Se utilizzi la funzione InitializeEngine per l’inizializzazione, assicurati di specificare [STAThread] (modello single-thread apartment) come attributo della funzione principale dell’applicazione:
[STAThread]
public static void Main()
{
  ...
}
Alcuni oggetti di ABBYY FineReader Engine (ad esempio ILayout::Blocks) hanno proprietà dell’oggetto di sola lettura. Questo non significa che tali proprietà non possano essere modificate, ma solo che non possono essere modificate direttamente. In C++ (C++ raw in Linux), se vuoi modificare una proprietà di questo tipo, devi passare un riferimento all’oggetto proprietà a una nuova variabile e quindi usare questa variabile per modificarla. Di seguito è riportato un esempio C++ per la proprietà ILayout::Blocks, rappresentata da una raccolta di sola lettura:
ILayout* pLayout = 0;
ILayoutBlocks* pLayoutBlocks = 0;
int blockIndex = 0;
// Receive the layout from the previously opened FRPage
pFRPage->get_Layout( &pLayout );
// The pLayoutBlocks variable receives a reference to the blocks collection from Layout
pLayout->get_Blocks( &pLayoutBlocks );
// Remove an element from the block collection
pLayoutBlocks->DeleteAt( blockIndex );
// Work with modified layout
...
// Release the objects
pLayoutBlocks->Release();
pLayout->Release();
Sì, è possibile. Durante la creazione dell’oggetto Engine, devi usare l’oggetto InprocLoader oppure OutprocLoader. Per i dettagli, vedi Different Ways to Load the Engine Object.Se utilizzi la funzione InitializeEngine per il caricamento, non è possibile usare l’oggetto Engine in più thread. In questo caso, i metodi di tutti gli oggetti FineReader Engine devono essere chiamati solo dal thread in cui è stato creato l’oggetto Engine.
Sì, è possibile. Per i dettagli, vedi Different Ways to Load the Engine Object.
Questa eccezione viene generata se non tutti gli oggetti creati e utilizzati dall’applicazione sono stati eliminati prima della deinizializzazione dell’oggetto Engine. Se tutti gli oggetti sono stati eliminati, l’eccezione può essere causata dal funzionamento del garbage collector.
Se l’applicazione è sviluppata in Windows con Visual Basic .NET, tutti gli oggetti con valore Nothing non vengono eliminati, ma solo contrassegnati per l’eliminazione. Il momento esatto in cui il garbage collector elimina l’oggetto non è noto. Pertanto, prima di deinizializzare l’oggetto Engine, è consigliabile chiamare i seguenti metodi in modo che il garbage collector elimini l’oggetto:
    GC.Collect()
    GC.WaitForPendingFinalizers()
Se si utilizza il log (che può essere attivato con il metodo StartLogging dell’oggetto Engine), in questa situazione può comparire anche il messaggio “Warning: DeinitializeEngine() has detected external references to FREngine objects. It can indicate a leak if programming platform without automatic garbage collection is used.”. Anche se si richiama esplicitamente il garbage collector (GC.Collect), questo non significa sempre che gli oggetti vengano eliminati immediatamente. Quando si lavora in ambienti con garbage collector, questo messaggio può essere ignorato.Quando si lavora in ambienti senza garbage collection (come C++), questa eccezione e questo messaggio possono indicare un problema nel codice sorgente. Alcuni oggetti potrebbero essere gestiti in modo errato, causando una perdita di memoria. Tuttavia, dopo la deinizializzazione di Engine tutti gli oggetti FineReader Engine verranno comunque eliminati, quindi la perdita di memoria può verificarsi nella parte client del codice, ad esempio se si creano wrapper personalizzati per gli oggetti FineReader Engine e non li si rilascia prima della deinizializzazione.Può essere utile usare la proprietà TotalObjectsCount dell’oggetto Engine, che restituisce il numero di oggetti non rilasciati e può aiutare a individuare la perdita di memoria.
Per farlo, è necessario chiamare il metodo StartLogging dell’oggetto Engine. Come parametri di input, specificare il nome del file di log e la variabile booleana che determina se i messaggi relativi alle chiamate ai metodi devono essere registrati o meno. Una volta chiamato questo metodo, tutti i messaggi verranno registrati. Per interrompere la registrazione, chiamare il metodo StopLogging dell’oggetto Engine.
Normalmente non è necessario registrare FREngine.dll. La libreria viene registrata automaticamente durante l’installazione Developer o l’installazione runtime con i parametri predefiniti.Tuttavia, se per qualche motivo è necessario registrare FREngine.dll dopo l’installazione (se durante l’installazione runtime è stato specificato RegisterCOM=No), utilizzare la seguente riga di comando:
regsvr32 /s /n /i:"<path to the Inc folder>" "<path to FREngine.dll>"
L’inglese è la lingua di riconoscimento predefinita. Se vuoi modificarla, devi usare il metodo SetPredefinedTextLanguage dell’oggetto RecognizerParams.
Se un blocco contiene testo di tipi diversi, ABBYY FineReader Engine continuerà comunque a trattarlo come testo dello stesso tipo. Per migliorare la qualità dell’Optical Character Recognition (OCR), disegna un blocco separato per ciascun tipo di testo.Vedi anche Using Text Type Autodetection.
Dopo aver riconosciuto il documento di destinazione, puoi esportarlo in formato XML. Lo schema XML usato in ABBYY FineReader Engine ti consente di ottenere tutte le informazioni necessarie sul testo elaborato, sulla sua struttura, sui suoi attributi e sulle varianti di riconoscimento.
Se la proprietà TextTypes dell’oggetto RecognizerParams contiene una qualsiasi combinazione di TT_Matrix, TT_Typewriter, TT_OCR_A e TT_OCR_B, i caratteri corsivi e apice/pedice non verranno riconosciuti, indipendentemente dai valori delle proprietà ProhibitItalic, ProhibitSubscript e ProhibitSuperscript dell’oggetto RecognizerParams.Vedi anche Using Text Type Autodetection.
Per capire se un carattere è stato riconosciuto in modo poco affidabile e richiede una verifica, usa la proprietà IsSuspicious degli oggetti PlainText o CharParams per il carattere in questione. Questa proprietà viene calcolata in base a ErrorProbability.Per implementare distinzioni più granulari, puoi usare la proprietà ErrorProbability degli oggetti PlainText o CharParams, che restituisce la probabilità stimata (in un intervallo da 0 a 100) che il carattere sia stato riconosciuto in modo errato. Tiene conto del contesto in cui si trova il carattere, ad esempio del fatto che la parola che lo contiene sia presente nel dizionario.Puoi anche ottenere il livello di confidenza del carattere, sia per un carattere riconosciuto (la proprietà CharConfidence dell’oggetto PlainText) sia per tutte le varianti di riconoscimento (la proprietà CharConfidence dell’oggetto CharacterRecognitionVariant). Il livello di confidenza fornisce una stima dell’accuratezza basata solo sull’immagine di un singolo carattere, senza considerare il contesto. Le stime di confidenza per caratteri diversi non sono confrontabili e l’unico uso sicuro di questo valore è confrontare più varianti di riconoscimento della stessa immagine (carattere).Nessuna di queste proprietà è significativa per i simboli ottenuti senza riconoscimento, ad esempio quelli presi direttamente dal file PDF di origine.
Assicurati di aver impostato su TRUE le proprietà SaveCharacterRecognitionVariants o SaveWordRecognitionVariants dell’oggetto RecognizerParams. Queste proprietà specificano se devono essere salvate le varianti di riconoscimento di caratteri o parole. Vedi anche Using Voting API.
Se il tuo sistema operativo è macOS 10.15 Catalina o una versione successiva, segui questi passaggi (in queste istruzioni viene utilizzata l’app Font Book):
  1. Individua la cartella contenente i font (fai clic con il pulsante destro sul font desiderato - Show in Finder).
  2. Installa i font locali dalla cartella individuata:
  • Apri le impostazioni dell’applicazione (Preferences).
  • Imposta la proprietà Default install location su Computer.
  • Fai clic sul pulsante ’+’ nella barra degli strumenti (oppure usa File - Add fonts).
  • Seleziona la cartella del passaggio 1.
  • Fai clic sul pulsante ‘Open’. Tieni presente che durante l’installazione dei font dovrai inserire la password utente.
In alternativa, puoi copiare i font dalla cartella del passaggio 1 nella cartella /Library/Fonts.Se non prevedi di installare i font ma vuoi usarli in ABBYY FineReader Engine, imposta la proprietà Folder dell’oggetto CustomFontSet.
Esistono due file di log della scansione: scantwain.txt e scanwia.txt. Sono archiviati nella cartella %userprofile%\AppData\Local\ABBYY\ScanManager\12.00.
La scansione è attualmente implementata solo in Windows.
Puoi usare la proprietà ScanSettings dell’oggetto ScanSource per accedere all’oggetto ScanSourceSettings. Questo oggetto consente di accedere alle impostazioni di scansione di una sorgente.Per maggiori dettagli, vedi la descrizione dello scenario Scanning.
La scansione è attualmente implementata solo in Windows.
Le versioni PDF supportate per l’esportazione sono enumerate da PDFVersionEnum.Si noti che la versione non deve essere in conflitto con i parametri di esportazione specificati. Come versione del file PDF deve essere selezionata la versione più antica compatibile con i parametri di esportazione specificati:
  • La versione del file più antica disponibile è la 1.3.
  • La versione del file PDF deve essere 1.4, se:
    • la proprietà PDFAComplianceMode dell’oggetto PDFExportParams è PCM_Pdfa_1a o PCM_Pdfa_1b
  • La versione del file PDF deve essere 1.4 o superiore, se:
  • La versione deve essere 1.5 o superiore, se:
  • La versione deve essere 1.6 o superiore, se:
    • la proprietà EncryptionAlgorithm dell’oggetto PDFEncryptionInfo è PDFEA_AES128, oppure
    • nel file PDF di output vengono utilizzati font OpenType.
  • La versione deve essere 1.7 o superiore, se:
  • L’ultima versione del file disponibile è la 2.0.
Vedere anche PDFExportFeatures.
A seconda di come si intende utilizzare i font, è necessario registrarli nel sistema operativo o aggiungerli all’applicazione prima di avviarla, utilizzando uno dei seguenti metodi:
  • copiare manualmente i font nella cartella Data/Resources/Font dell’applicazione basata su ABBYY FineReader Engine.
  • copiare manualmente i font nella cartella di sistema /usr/share/fonts.
  • installare il pacchetto per l’installazione dei font, in base al sistema operativo in uso.
Per ulteriori dettagli, vedere Utilizzo dei font.
Se non si riesce a trovare risposta alla propria domanda, contattare il Supporto tecnico ABBYY.