Zum Hauptinhalt springen

Lizenzierung und Bereitstellung

ABBYY FineReader Engine 12 stellt für die Bereitstellung ein spezielles Installationsprogramm bereit. Mit diesem Programm können Sie die ABBYY FineReader Engine-Bibliothek auf einer Workstation automatisch über die Befehlszeile installieren. Sie können die Bibliothek auch manuell installieren, indem Sie die erforderlichen Dateien kopieren. Siehe Bereitstellung von Anwendungen, die die ABBYY FineReader Engine-Bibliothek verwenden.
Alle Lizenzen in einem Projekt verwenden dieselbe Customer Project ID, die von den Funktionen zum Initialisieren der Bibliothek benötigt wird. Die Runtime-Lizenz des Endbenutzers und die Developer License des Softwareentwicklers müssen zur Customer Project ID passen, die an diese Funktionen übergeben wird.Siehe auch Bereitstellung von Anwendungen, die die ABBYY FineReader Engine-Bibliothek verwenden.
Auf der Workstation sollten Sie eine Runtime-Lizenz aktivieren. Siehe Aktivieren der ABBYY FineReader Engine-Bibliothek mit der Runtime-Lizenz.
  • Dateien für die Module, die von Ihrer Anwendung unterstützt werden.
  • Dateien, die in der Tabelle im Abschnitt ABBYY FineReader Engine Distribution Kit als „mandatory“ gekennzeichnet sind. Dabei handelt es sich um Systemmodule und die wichtigsten Erkennungsdatenbanken.
  • Erkennungsdatenbanken für handschriftlichen/druckschriftlichen Text, falls erforderlich.
  • Ressourcendateien für die Oberflächensprachen, die in Ihrer Anwendung verwendet werden.
  • Wörterbuch-Unterstützungsdateien für die Erkennungssprachen, die von Ihrer Anwendung unterstützt werden. Wenn die Erkennungssprachen Sprachen mit lateinischem Alphabet umfassen, stellen Sie sicher, dass Sie die Dateien Univers.amd und Univers.amm kopieren.
  • Windows-Scanmodule, scanspezifische Ressourcen und Twain-Module, wenn Ihre Anwendung das Scannen über die ABBYY FineReader Engine-Schnittstelle ausführt.
  • Windows Visual Components-Module und entsprechende spezifische Ressourcen, wenn Ihre Anwendung ABBYY FineReader Engine Visual Components verwendet. Registrieren Sie VisualComponents_dll mit regsvr32.exe.
Sie können auch die Datei FREngineDistribution.csv verwenden, um automatisch eine Liste der Dateien zu erstellen, die für den Betrieb Ihrer Anwendung erforderlich sind.Siehe
Nein, das ist nicht erforderlich. Im Gegenteil, es ist sinnvoll, den Vollzugriff für ‘Everyone’ einzuschränken, damit nicht autorisierte Benutzer keine Änderungen vornehmen können. Für die Gruppe ‘Everyone’ reicht es aus, nur ‘Read’-Zugriff zu gewähren.
Für die folgenden Ordner sind Vollzugriffsberechtigungen erforderlich:
  • Ordner %TEMP%
  • Ordner %ProgramData%\ABBYY\SDK\12\FineReader Engine
  • Ordner %ProgramData%\ABBYY\SDK\12\Licenses (erforderlich für den Lizenzserver, optional für Workstations)
Alle Benutzer, die Ihre Anwendung ausführen, sollten Lese-, Ausführungs- und Schreibberechtigungen haben für:
  • den Ordner %ProgramData%\ABBYY.
Die folgenden Registrierungszweige sollten von der Workstation aus zugänglich sein:
  • “HKEY_CURRENT_USER\Software\ABBYY\SDK\12\FineReader Engine” — Vollzugriff
  • “HKEY_CURRENT_USER\Software\ABBYY\SDK\12” — Vollzugriff nur für die Installation
  • “HKEY_LOCAL_MACHINE\Software\ABBYY\SDK\12” — Vollzugriff nur für die Installation
Siehe Installieren der ABBYY FineReader Engine-Bibliothek.
Bitte stellen Sie sicher, dass die Runtime-Lizenz zur Customer Project ID passt, mit der die Anwendung kompiliert wurde. Wenn die Lizenz nicht mit der Customer Project ID übereinstimmt, funktioniert die Anwendung nicht.Die Customer Project ID wird als einer der Eingabeparameter an die Methoden übergeben, die FineReader Engine laden. Stellen Sie sicher, dass die von diesen Methoden verwendete Customer Project ID korrekt ist.Siehe auch Lizenzierung, Bereitstellung von Anwendungen, die die ABBYY FineReader Engine-Bibliothek verwenden.
Bitte überprüfen Sie mit der folgenden Befehlszeile die Berechtigungen für den Ordner %ProgramData%\ABBYY\SDK\12\Licenses:
ls -l /var/lib/ABBYY/SDK/12 | grep Licenses
chmod 777 /var/lib/ABBYY/SDK/12/Licenses
Wenn die Befehlszeile einen anderen Wert als drwxrwxrwx zurückgibt, fehlen dem Ordner %ProgramData%\ABBYY\SDK\12\Licenses einige Berechtigungen.Um dem Ordner %ProgramData%\ABBYY\SDK\12\Licenses vollständige Zugriffsrechte zu erteilen, führen Sie die folgende Befehlszeile aus:
Um Verarbeitungsmethoden wie IFRDocument::Process verwenden zu können, benötigen Sie eine Lizenz, die das Modul Processing enthält. Wenn Ihre Lizenz dies nicht unterstützt, können Sie nur Barcodes erkennen; verwenden Sie dazu die Methode IFRPage::ExtractBarcodes.
Um Verarbeitungsmethoden wie IFRDocument::Process verwenden zu können, benötigen Sie eine Lizenz, die das Modul Processing enthält. Wenn Ihre Lizenz dies nicht unterstützt, können Sie Barcodes und/oder Häkchen dennoch mit anderen Methoden erkennen:
Um ABBYY FineReader Engine in einem Docker-Container auszuführen, verwenden Sie zwei separate Container, in denen ABBYY FineReader Engine bzw. der Licensing Service ausgeführt werden.Anweisungen für dieses Szenario finden Sie unter ABBYY FineReader Engine 12 in einem Docker-Container ausführen.
Sie können Ihre auf ABBYY FineReader Engine basierende Anwendung in Azure Cloud Service oder Azure App Service ausführen. Verwenden Sie dazu die Anweisungen unter ABBYY FineReader Engine in Azure Services ausführen.
Bildbezogene Fragen
Verwenden Sie die Methoden des Objekts ImageDocument, die die Bildqualität verbessern. Mit diesen Methoden können Sie eine Bildregion auswählen, mit der Sie arbeiten möchten.
ABBYY FineReader Engine bietet mehrere Möglichkeiten, die Bildauflösung zu korrigieren:
  1. Nach dem Öffnen des Bildes mit der Methode ChangeResolution des Objekts ImageDocument.
    Sie können die Methode DetectResolution des Objekts FRPage verwenden, um den optimalen Auflösungswert zu ermitteln.
  2. Während der Bildvorverarbeitung (die standardmäßig im Aufruf aller Methoden enthalten ist, die eine vollständige Bildverarbeitung durchführen), gesteuert über die Eigenschaft OverwriteResolutionMode des Objekts PagePreprocessingParams. Die Auflösung kann automatisch korrigiert oder auf den in der Eigenschaft ResolutionToOverwrite angegebenen Wert gesetzt werden.
Für Bilder, die durch das Erfassen des Computerbildschirms entstanden sind, empfehlen wir Einstellungen für die Textextraktion. Rufen Sie die Methode LoadPredefinedProfile des Objekts Engine auf, um eines der vordefinierten Profile zu laden:
  • TextExtraction_Accuracy — zum Extrahieren von Text aus Dokumenten, optimiert auf Genauigkeit
  • TextExtraction_Speed — zum Extrahieren von Text aus Dokumenten, optimiert auf Geschwindigkeit
Die Auflösung des per Screenshot erfassten Bildes muss auf 72 oder 96 dpi eingestellt werden (je nach Bildschirmauflösung).
Diese Empfehlungen gelten für digitale Bilder, die mit dem Betriebssystem oder einer auf dem Computer ausgeführten Software erstellt wurden. Die Auflösung eines Bildschirmfotos, das mit einem zusätzlichen Gerät (z. B. einer Kamera) aufgenommen wurde, sollte zwischen 200 und 300 dpi liegen.
Siehe auch Arbeiten mit Profilen.

Verwenden des Engine-Objekts

Wenn Sie die Funktion InitializeEngine zur Initialisierung verwenden, stellen Sie sicher, dass [STAThread] (Single-Thread-Apartment-Modell) als Attribut für die Hauptfunktion Ihrer Anwendung angegeben ist:
[STAThread]
public static void Main()
{
  ...
}
Bestimmte ABBYY FineReader Engine-Objekte (zum Beispiel ILayout::Blocks) haben Objekteigenschaften, die nur lesbar sind. Das bedeutet nicht, dass solche Eigenschaften nicht geändert werden können, sondern nur, dass sie nicht direkt geändert werden können. Wenn Sie in C++ (unter Linux: C++ raw) eine solche Eigenschaft ändern möchten, müssen Sie eine Referenz auf das Eigenschaftsobjekt an eine neue Variable übergeben und diese Variable dann zum Ändern verwenden. Unten sehen Sie ein C++-Beispiel für die Eigenschaft ILayout::Blocks, die als nur lesbare Sammlung dargestellt wird:
ILayout* pLayout = 0;
ILayoutBlocks* pLayoutBlocks = 0;
int blockIndex = 0;
// Das Layout von der zuvor geöffneten FRPage abrufen
pFRPage->get_Layout( &pLayout );
// Die Variable pLayoutBlocks erhält eine Referenz auf die Blocks-Sammlung aus Layout
pLayout->get_Blocks( &pLayoutBlocks );
// Ein Element aus der Block-Sammlung entfernen
pLayoutBlocks->DeleteAt( blockIndex );
// Mit dem geänderten Layout arbeiten
...
// Die Objekte freigeben
pLayoutBlocks->Release();
pLayout->Release();
Ja, das ist möglich. Beim Erstellen des Objekts Engine sollten Sie das Objekt InprocLoader oder OutprocLoader verwenden. Einzelheiten finden Sie unter Different Ways to Load the Engine Object.Wenn Sie die Funktion InitializeEngine zum Laden verwenden, kann das Engine-Objekt nicht in mehreren Threads verwendet werden. In diesem Fall dürfen die Methoden aller FineReader Engine-Objekte nur aus dem Thread aufgerufen werden, in dem das Engine-Objekt erstellt wurde.
Ja, das ist möglich. Einzelheiten finden Sie unter Different Ways to Load the Engine Object.
Diese Ausnahme wird ausgelöst, wenn nicht alle Objekte, die von der Anwendung erstellt und verwendet wurden, vor der Deinitialisierung des Engine-Objekts gelöscht wurden. Wenn alle Objekte gelöscht wurden, kann die Ausnahme auch durch den Garbage Collector verursacht werden.
Wenn die Anwendung unter Windows mit Visual Basic .NET entwickelt wird: Objekte mit dem Wert Nothing werden nicht gelöscht, sondern nur zum Löschen markiert. Der genaue Zeitpunkt, zu dem der Garbage Collector ein Objekt tatsächlich löscht, ist nicht bekannt. Daher sollten Sie vor der Deinitialisierung des Engine-Objekts die folgenden Methoden aufrufen, damit der Garbage Collector das Objekt löscht:
    GC.Collect()
    GC.WaitForPendingFinalizers()
Wenn Sie die Protokollierung verwenden (sie kann mit der Methode StartLogging des Engine-Objekts aktiviert werden), kann in dieser Situation auch die Meldung “Warning: DeinitializeEngine() has detected external references to FREngine objects. It can indicate a leak if programming platform without automatic garbage collection is used.” angezeigt werden. Selbst wenn Sie den Garbage Collector explizit aufrufen (GC.Collect), bedeutet das nicht immer, dass die Objekte sofort gelöscht werden. Wenn Sie in Umgebungen mit Garbage Collection arbeiten, können Sie diese Meldung ignorieren.Wenn Sie in Umgebungen ohne Garbage Collection arbeiten (z. B. in C++), können diese Ausnahme und diese Meldung auf ein Problem in Ihrem Quellcode hinweisen. Einige Objekte werden möglicherweise nicht korrekt verarbeitet, was zu einem Speicherleck führen kann. Nach der Deinitialisierung von Engine werden jedoch in jedem Fall alle FineReader Engine-Objekte gelöscht, sodass das Speicherleck im Clientteil des Codes auftreten kann, d. h. wenn Sie eigene Wrapper für die FineReader Engine-Objekte erstellen und diese vor der Deinitialisierung nicht freigeben.Erwägen Sie die Verwendung der Eigenschaft TotalObjectsCount des Engine-Objekts. Sie gibt die Anzahl nicht freigegebener Objekte zurück und kann Ihnen dabei helfen, das Speicherleck aufzuspüren.
Dazu müssen Sie die Methode StartLogging des Engine-Objekts aufrufen. Geben Sie als Eingabeparameter den Namen der Protokolldatei und die boolesche Variable an, die festlegt, ob Meldungen zu Methodenaufrufen protokolliert werden sollen. Nachdem Sie diese Methode aufgerufen haben, werden alle Meldungen protokolliert. Um die Protokollierung zu beenden, rufen Sie die Methode StopLogging des Engine-Objekts auf.
Normalerweise müssen Sie FREngine.dll nicht registrieren. Die Bibliothek wird während der Developer-Installation oder der Runtime-Installation mit den Standardparametern automatisch registriert.Wenn Sie FREngine.dll jedoch aus irgendeinem Grund nach der Installation registrieren müssen (bei der Runtime-Installation haben Sie RegisterCOM=No angegeben), verwenden Sie die folgende Befehlszeile:
regsvr32 /s /n /i:"<path to the Inc folder>" "<path to FREngine.dll>"
Englisch ist die standardmäßige Erkennungssprache. Wenn Sie die standardmäßige Erkennungssprache ändern möchten, müssen Sie die Methode SetPredefinedTextLanguage des Objekts RecognizerParams verwenden.
Wenn ein Block Text unterschiedlicher Typen enthält, behandelt ABBYY FineReader Engine ihn dennoch als Text desselben Typs. Um die Qualität der Optical Character Recognition (OCR) zu verbessern, zeichnen Sie für jeden Texttyp einen separaten Block.Siehe auch Automatische Erkennung des Texttyps verwenden.
Nach der Erkennung des Zieldokuments können Sie es ins XML-Format exportieren. Das in ABBYY FineReader Engine verwendete XML-Schema ermöglicht es Ihnen, alle benötigten Informationen über den verarbeiteten Text sowie seine Struktur, Attribute und Erkennungsvarianten abzurufen.
Wenn die Eigenschaft TextTypes des Objekts RecognizerParams eine beliebige Kombination aus TT_Matrix, TT_Typewriter, TT_OCR_A und TT_OCR_B enthält, werden kursive Schriftarten sowie hochgestellter bzw. tiefgestellter Text nicht erkannt, unabhängig von den Werten der Eigenschaften ProhibitItalic, ProhibitSubscript und ProhibitSuperscript des Objekts RecognizerParams.Siehe auch Automatische Erkennung des Texttyps verwenden.
Um festzustellen, ob ein Zeichen unzuverlässig erkannt wurde und überprüft werden muss, verwenden Sie für das betreffende Zeichen die Eigenschaft IsSuspicious der Objekte PlainText oder CharParams. Sie wird auf Grundlage von ErrorProbability berechnet.Für eine feinere Differenzierung können Sie die Eigenschaft ErrorProbability der Objekte PlainText oder CharParams verwenden. Sie gibt die geschätzte Wahrscheinlichkeit zurück (im Bereich von 0 bis 100), dass das Zeichen falsch erkannt wurde. Dabei wird der Kontext berücksichtigt, in dem das Zeichen vorkommt, zum Beispiel, ob das Wort mit diesem Zeichen im Wörterbuch enthalten ist.Sie können auch die Erkennungssicherheit eines Zeichens abrufen, sowohl für ein erkanntes Zeichen (die Eigenschaft CharConfidence des Objekts PlainText) als auch für alle Erkennungsvarianten (die Eigenschaft CharConfidence des Objekts CharacterRecognitionVariant). Diese Sicherheit liefert eine Genauigkeitsschätzung, die nur auf dem Bild eines einzelnen Zeichens basiert, ohne den Kontext zu berücksichtigen. Sicherheitsschätzungen für verschiedene Zeichen sind nicht miteinander vergleichbar, und sinnvoll lässt sich dieser Wert nur verwenden, um mehrere Erkennungsvarianten desselben Bildes (Zeichens) zu vergleichen.Keine dieser Eigenschaften ist für Symbole sinnvoll, die ohne Erkennung gewonnen wurden, zum Beispiel solche, die direkt aus der PDF-Quelldatei übernommen wurden.
Stellen Sie sicher, dass die Eigenschaften SaveCharacterRecognitionVariants oder SaveWordRecognitionVariants des Objekts RecognizerParams auf TRUE gesetzt sind. Diese Eigenschaften legen fest, ob Varianten der Zeichen- bzw. Worterkennung gespeichert werden sollen. Siehe auch Using Voting API.
Wenn Sie macOS 10.15 Catalina oder höher verwenden, gehen Sie wie folgt vor (in dieser Anleitung verwenden wir die Anwendung Font Book):
  1. Suchen Sie den Ordner mit den Schriftarten (klicken Sie mit der rechten Maustaste auf die gewünschte Schriftart und wählen Sie Show in Finder).
  2. Installieren Sie die lokalen Schriftarten aus dem gefundenen Ordner:
  • Öffnen Sie die Anwendungseinstellungen (Preferences).
  • Setzen Sie die Eigenschaft Default install location auf Computer.
  • Klicken Sie in der Symbolleiste auf die Schaltfläche ’+’ (oder verwenden Sie File - Add fonts).
  • Wählen Sie den Ordner aus Schritt 1 aus.
  • Klicken Sie auf die Schaltfläche ‘Open’. Beachten Sie, dass Sie während der Installation der Schriftarten das Benutzerkennwort eingeben müssen.
Alternativ können Sie die Schriftarten aus dem Ordner in Schritt 1 in den Ordner /Library/Fonts kopieren.Wenn Sie die Schriftarten nicht installieren möchten, sie aber in ABBYY FineReader Engine verwenden wollen, setzen Sie die Eigenschaft Folder des Objekts CustomFontSet.
Es gibt zwei Scan-Protokolldateien: scantwain.txt und scanwia.txt. Sie werden im Ordner %userprofile%\AppData\Local\ABBYY\ScanManager\12.00 gespeichert.
Scannen ist derzeit nur unter Windows implementiert.
Sie können über die Eigenschaft ScanSettings des Objekts ScanSource auf das Objekt ScanSourceSettings zugreifen. Dieses Objekt bietet Zugriff auf die Scaneinstellungen einer Quelle.Weitere Informationen finden Sie in der Beschreibung des Szenarios Scanning.
Scannen ist derzeit nur unter Windows implementiert.
Die für den Export unterstützten PDF-Versionen sind in PDFVersionEnum aufgeführt.Beachten Sie, dass die Version nicht im Widerspruch zu den angegebenen Exportparametern stehen darf. Es sollte die früheste PDF-Dateiversion ausgewählt werden, die den angegebenen Exportparametern entspricht:
  • Die früheste verfügbare Dateiversion ist 1.3.
  • Die PDF-Dateiversion sollte 1.4 sein, wenn:
    • die Eigenschaft PDFAComplianceMode des PDFExportParams-Objekts PCM_Pdfa_1a oder PCM_Pdfa_1b ist
  • Die PDF-Dateiversion sollte 1.4 oder höher sein, wenn:
  • Die Version sollte 1.5 oder höher sein, wenn:
  • Die Version sollte 1.6 oder höher sein, wenn:
    • die Eigenschaft EncryptionAlgorithm des PDFEncryptionInfo-Objekts PDFEA_AES128 ist, oder
    • im ausgegebenen PDF OpenType-Schriftarten verwendet werden.
  • Die Version sollte 1.7 oder höher sein, wenn:
  • Die neueste verfügbare Dateiversion ist 2.0.
Siehe auch PDFExportFeatures.
Je nachdem, wie Sie die Schriftarten verwenden möchten, müssen Sie sie im Betriebssystem registrieren oder sie vor dem Start Ihrer Anwendung mit einer der folgenden Methoden zu Ihrer Anwendung hinzufügen:
  • Kopieren Sie die Schriftarten manuell in den Ordner Data/Resources/Font Ihrer auf ABBYY FineReader Engine basierenden Anwendung.
  • Kopieren Sie die Schriftarten manuell in den Systemordner /usr/share/fonts.
  • Installieren Sie je nach Betriebssystem das entsprechende Schriftartenpaket.
Weitere Informationen finden Sie unter Working with Fonts.
Wenn Sie keine Antwort auf Ihre Frage finden, wenden Sie sich bitte an den ABBYY Technical Support.