Einsatz CIB Module unter iOS technischer Leitfaden (DE)
Site: | CIB eLearning |
Course: | CIB Module unter iOS |
Book: | Einsatz CIB Module unter iOS technischer Leitfaden (DE) |
Printed by: | Guest user |
Date: | Saturday, 21 December 2024, 7:33 PM |
1. Lieferumfang
Die CIB Module werden für iOS als Framework geliefert.
Komponente |
Softwareumfang |
Dokumentation |
|
CIB Module als SDK |
|
|
|
2. Einführung
Das vorliegende Bibliotheksmodul für den Einsatz unter iOS beinhaltet alle CIB Module die erforderlich sind um Bilder und PDFs auf mobilen Endgeräten zu bearbeiten. Die verfügbaren Wrapper erleichtern den Einsatz der mächtigen CIB Module auf der jeweiligen Plattform.
Die Größe und der Umfang des Bibliotheksmoduls kann auf Anfrage angepasst werden.
3. SDK
3.1. Anforderungen
Minimal wird iOS 9.3 unterstützt.
Unterstützte Architekturen sind:
- ARM64 (64 bit)
- x86 (64 bit)
3.2. Integration
AllgemeinSetzen der Lizenz
Prüfen der Lizen
Allgemein
Die CIB Module werden für iOS als xcframework geliefert. Das xcframework kann wie folgt in eine bestehende iOS-Anwendung integriert werden. Dabei wird auf Xcode als Entwicklungsumgebung gesetzt.
Die im Lieferumfang enthaltene Beispielintegration („Showcase“) kann ebenfalls als Vorlage genutzt werden.
- In Xcode, markieren Sie ihr App-Projekt im „Project Navigator“.
- Unter „Targets“ wählen Sie Ihr App Target und öffnen die Seite „General“.
- Im Bereich „Linked Frameworks and Libraries” klicken Sie auf das „+“.
- Wählen Sie den Pfad zum xcframework mit den CIB Modulen und klicken Sie „Add“.
Setzen der Lizenz
Die Lizenz besteht jeweils aus Ihrem Kundennamen („Company“) und einem Schlüssel („Key“). Diese müssen Sie über Properties bei jedem Aufruf gesetzt werden.
Beispiel für CIB pdfToolbox und CIB ocr:
#define ocrLicenseCompany @"REQUEST FROM CIB SUPPORT #define ocrLicenseKey @"REQUEST FROM CIB SUPPORT #define pdfToolboxLicenseCompany @"REQUEST FROM CIB SUPPORT #define pdfToolboxLicenseKey @"REQUEST FROM CIB SUPPORT … DXOCRJob *ocrJob = [[DXOCRJob alloc] init]; [ocrJob setValue:ocrLicenseCompany forProperty:COMOD_PROP_LICENSE_COMPANY]; [ocrJob setValue:ocrLicenseKey forProperty:COMOD_PROP_LICENSE_KEY]; … DXPDFToolboxJob *pdfToolboxJob = [[DXPDFToolboxJob alloc] init]; [pdfToolboxJob setValue:pdfToolboxLicenseCompany forProperty:COMOD_PROP_LICENSE_COMPANY]; [pdfToolboxJob setValue:pdfToolboxLicenseKey forProperty:COMOD_PROP_LICENSE_KEY];
Prüfen der Lizen
Hinweis:
Eine Lizenz kann bestimmte Funktionen ein- oder ausschließen. Um sicher zu gehen ob ein Lizenzproblem vorliegt, muss das Tracefile geprüft werden. Dazu gehen Sie wie folgt vor.
- Stellen Sie sicher, dass bei Ihrem Aufruf an das jeweilige CIB Modul die Property „TraceFilename“ mit einem validen Dateipfad gesetzt ist.
- Starten Sie ihren Job.
- Nachdem der Job beendet ist, öffnen Sie auf dem Gerät den unter „TraceFilename“ angegebenen Dateipfad. Hier befindet sich der Trace des Jobs.
- Öffnen Sie das Tracefile. Wenn die Lizenz gültig ist, sollte u.a. folgende Zeile darin zu finden sein:
LICENSE: Valid license.
Ist dies nicht der Fall, prüfen Sie Ihre Lizenz. Falls das Problem weiter besteht, kontaktieren Sie den CIB Support.
3.3. Ansteuerung
AllgemeinCIB pdf toolbox
CIB pdfModule
CIB image toolbox
CIB ocr
CIB aiModule
Allgemein
Bei den CIB Modulen handelt es sich um native C++-Bibliotheken. Dies bringt gewisse technische Erfordernisse mit sich, die hier beschrieben werden.
Prinzipiell folgt der Aufruf aller CIB Module einem festen Ablauf. Er kann durch Wrapper implizit ausgeführt werden. Lediglich beim Direktzugriff auf die CIB Module wird der hier beschriebene Ablauf explizit offensichtlich:
- Laden der Bibliothek und aller Abhängigkeiten.
- Muss lediglich einmalig je Laufzeit vorgenommen werden.
- Erstellen eines Jobs.
- Setzen von Properties für diesen Job.
- Ausführung des Jobs.
- Abholen der Ergebnisse.
- Freigeben des Jobs.
Für die Fehleranalyse gibt jeder Aufruf eines Jobs einen Fehlercode zurück. In den jeweiligen technischen Leitfäden finden sich Listen mit der jeweiligen Bedeutung.
Für jeden Aufruf eines Jobs kann darüber hinaus ein Tracefile geschrieben werden, welches für die weitere Fehleranalyse erforderlich ist. Es wird nur geschrieben, wenn für die Property „TraceFilename“ ein gültiger Pfad gesetzt ist.
Für die CIB Module sind im Framework Klassen für den Direktzugriff vorhanden. Diese mappen 1:1 die nativen Schnittstellen der CIB Module über JNI auf Java-Methoden. Somit können die CIB Module ganz individuell genutzt und die volle Funktionalität ausgereizt werden. Die jeweiligen Property-Namen und mögliche Werte finden Sie für jedes CIB Modul in dem entsprechenden technischen Leitfaden.
In jedem Fall wird empfohlen zunächst einen Blick auf den Showcase zu werfen, der bereits typische Anwendungsfälle beinhaltet, auf die eigene aufgebaut werden können.
CIB pdf toolbox
Klassen für Direktzugriff
- doXisafeBase/DXPDFToolboxJob
- doXisafeBase/COMod
Beispiele für die einzelnen Schritte:
- Laden der Bibliothek und aller Abhängigkeiten.
- Wird implizit durch das System vorgenommen.
- Erstellen eines Jobs.
- Setzen von Properties für diesen Job.
- Namen und Werte für die meisten Properties finden Sie in „COMod.h“. Eine vollständige Liste mit Dokumentation finde Sie im technischen Leitfaden der CIB pdf toolbox.
- Ausführung des Jobs.
- Abholen der Ergebnisse.
- Wenn die Property „OutputFilename“ gesetzt wurde, kann im dort angegebenen Pfad die Ausgabedatei gefunden werden.
- Abholen von Get-Properties mit folgendem Aufruf:
- Fehlercodes und Meldungen sind hier zu finden:
- Freigeben des Jobs.
- Wird implizit vorgenommen.
DXPDFToolboxJob *job = [[DXPDFToolboxJob alloc] init];
[job setValue:value forProperty:name];
BOOL success = [job execute];
NSString *result = [job valueForProperty:name];
job.error.code; job.error.userInfo;
CIB pdfModule
- doXisafeBase/DXPDFModuleJob
- doXisafeBase/COMod
Beispiele für die einzelnen Schritte:
- Laden der Bibliothek und aller Abhängigkeiten.
- Wird implizit durch das System vorgenommen.
- Erstellen eines Jobs.
- Setzen von Properties für diesen Job.
- Namen und Werte für die meisten Properties finden Sie in „COMod.h“. Eine vollständige Liste mit Dokumentation finde Sie im technischen Leitfaden der CIB pdf toolbox.
- Ausführung des Jobs.
- Abholen der Ergebnisse.
- Wenn die Property „OutputFilename“ gesetzt wurde, kann im dort angegebenen Pfad die Ausgabedatei gefunden werden.
- Abholen von Get-Properties mit folgendem Aufruf:
- Fehlercodes und Meldungen sind hier zu finden:
- Freigeben des Jobs.
- Wird implizit vorgenommen.
DXPDFToolboxJob *job = [[DXPDFModuleJob alloc] init];
[job setValue:value forProperty:name];
BOOL success = [job execute];
String *result = job.getProperty(name)
job.error.code; job.error.userInfo;
CIB image toolbox
- doXisafeBase/DXIPLProcessingJob
- doXisafeBase/COMod
Beispiele für die einzelnen Schritte:
- Laden der Bibliothek und aller Abhängigkeiten.
- Wird implizit durch das System vorgenommen.
- Erstellen eines Jobs.
- Setzen von Properties für diesen Job.
- Namen und Werte für die meisten Properties finden Sie in „COMod.h“. Eine vollständige Liste mit Dokumentation finde Sie im technischen Leitfaden der CIB image toolbox.
-
„UIImages“ können als Input wie folgt übergeben werden.
- Ausführung des Jobs.
- Abholen der Ergebnisse.
- Wenn die Property „OutputFilename“ gesetzt wurde, kann im dort angegebenen Pfad die Ausgabedatei gefunden werden.
- Abholen von Get-Properties mit folgendem Aufruf:
- Falls das Ergebnis wiederum eine Bitmap ist, kann diese wie folgt abgeholt werden./li>
UIImage *uiImageResult = [job getOutputUiImage];
- Fehlercodes und Meldungen sind hier zu finden:
job.error.code; job.error.userInfo;
- Freigeben des Jobs.
- Wird implizit vorgenommen.
DXIPLProcessingJob *job = [[DXIPLProcessingJob alloc] init];
[job setValue:value forProperty:name];
UIImage *uiImage = [UIImage imageNamed:pathFile];
[job addInputUiImage: uiImage];
BOOL success = [job execute];
NSString *result = [job valueForProperty:name];
Wrapper-Klassen
- doXisafeBase/CibIpl
Beispiele für die einzelnen Schritte mit CibIpl:
Hierbei handelt es sich um eine Klasse mit statischen Methoden. Sie decken Anwendungsfälle zur Bildbearbeitung ab wie das Anwenden von Filtern, Erkennung von Dokumenten oder das Drehen von Bildern. Innerhalb der Methoden sind alle Schritte berücksichtigt, womit sich der Einsatz als sehr einfach darstellt.
UIImage *uiImageResult = [[CibIpl alloc] boostContrast:uiImage contrast:1.5f];
CIB ocr
- doXisafeBase/DXOCRJob
- doXisafeBase/COMod
Beispiele für die einzelnen Schritte:
- Laden der Bibliothek und aller Abhängigkeiten.
- Wird implizit durch das System vorgenommen.
- Erstellen eines Jobs.
- Setzen von Properties für diesen Job.
- Namen und Werte für die meisten Properties finden Sie in „COMod.h“. Eine vollständige Liste mit Dokumentation finde Sie im technischen Leitfaden der CIB imagetoolbox.
- Ausführung des Jobs.
- Abholen der Ergebnisse.
- Wenn die Property „OutputFilename“ gesetzt wurde, kann im dort angegebenen Pfad die Ausgabedatei gefunden werden.
- Abholen von Get-Properties mit folgendem Aufruf:
- Fehlercodes und Meldungen sind hier zu finden:
- Freigeben des Jobs.
- Wird implizit vorgenommen.
DXOCRJob *job = [[DXOCRJob alloc] init];
[job setValue:value forProperty:name];
BOOL success = [job execute];
NSString *result = [job valueForProperty:name];
job.error.code; job.error.userInfo;
CIB aiModule
Dieses Modul wird nicht direkt angesteuert. Es wird durch CIB image toolbox gekapselt und wird für die Kantenerkennung auf KI-Basis benötigt. Am einfachsten ist ein Aufruf über die Wrapper-Klasse „CibIpl“ mit der Methode findLargestRectangle() indem der dritte Parameter auf „Ai“ gesetzt wird. Dies setzt direkt die Property „InfoGetBoundaries/Algorithm“ in CIB image toolbox. Weitere mögliche Werte und Informationen finden Sie im Technischen Leitfaden von CIB image toolbox, wenn Sie nach „InfoGetBoundaries“ suchen.
DXPointsRecord record = [[CibIpl alloc] findLargestRectangle:&cibImageProcessingImage orientation:UIInterfaceOrientationPortrait algorithm:@"Ai"];
3.4. Empfehlung zur Texterkennung
Die Ergebnisse der Texterkennung lassen sich mit geeigneter Vorverarbeitung der Bilddaten deutlich verbessern.
Aufnahme des Bildes
Das Dokument möglichst eben aufgenommen sein. Unebenheiten des Dokuments erschweren die Erkennung.
Reinigen des Bildes
Entweder mit einem Schwarz-Weiß-Filter wie:
[[CibIpl alloc] localOtsuBinarizer:&cibImageProcessingImage threshold:1]
oder mit dem folgenden Filter, der auch für Farbdockumente geeignet ist:
[[CibIpl alloc] whiteboard:&cibImageProcessingImage reflectionMode:NO]
Ausrichten des Bildes
Die Ausrichtung des Dokuments und des darin enthaltenen Textes ist wichtig. Der Text sollte möglichst waagerecht ausgerichtet sein. Die Ausrichtung wird gleichzeitig mit dem Zuschnitt durch folgende Funktion angepasst:
[[CibIpl alloc] warpCrop:&cibImageProcessingImage points:mPoints resize:NO]
Zusätzlich kann eine automatische Ausrichtung mit:
[[CibIpl alloc] deskew:&cibImageProcessingImage]
noch Verbesserungen in der Texterkennung bringen.
4. Showcase
Bei dem mitgelieferten Showcase handelt es sich um ein Projekt für Xcode.
4.1. Öffnen und Starten
Hinweis:
Im Showcase sind zwei SDKs im Auslieferungszustand enthalten. Das SDK für die Build-Konfiguration „Debug“ ist nur mit Simulatoren kompatibel. Das SDK für die Build-Konfiguration „Release“ ist nur mit echten Geräten kompatibel.
Wenn Sie den Code
in einer Konfiguration anderweitig ausführen möchten, tauschen Sie das SDK im Showcase bitte aus der entsprechenden Framework-Datei.
- Entpacken Sie den mitgelieferten Showcase für iOS in ein lokales Verzeichnis.
- Öffnen Sie mit einem Doppelklick auf „sdk-showCase.xcodeproj“ das Projekt in Xcode.
- In der Projektnavigation finden sie nun „sdk-showCase“.
- Darunter finden Sie in „Frameworks“ das SDK unter der Bezeichnung „doXisafeBase.framework“.
- Im Ordner „sdk-showCase“ finden Sie den Beispielcode.
- Öffnen Sie „sdk-showCase“ ➔ „Classes“ und die darin enthaltenen Dateien „ImageFilterTests.mm“, „PdfTests.mm“ und „TestRecognitionTests.mm“. Sie enthalten typische Anwendungsfälle zu den jeweiligen Themenbereichen.
- In „ViewController.m“ können einzelne Beispiele ein- und auskommentiert werden, die ausgeführt werden sollen.
- Mit einem Klick auf „Build and Run“ in Xcode werden die Tests ausgeführt.
4.2. Setzen der Lizenz
Hinweis:
Die Lizenz wurde im Showcase bereits von uns für Sie gesetzt.
Sofern noch keine Lizenz von uns gesetzt wurde, gehen Sie wie folgt vor.
- Öffnen Sie das Module „sdk-showcase“.
- Öffnen Sie den Ordner „sdk-showcase“.
- Öffnen Sie den Ordner „Classes“.
- Öffnen Sie die Dateien PdfTests.mm, TextRecognitionTests.mm, InMemoryTests.mm und TextRecognitionWithDeepErTests.mm.
- Setzen Sie als Wert die von uns zur Verfügung gestellten Lizenzen für CIB pdf toolbox und CIB ocr wie in „Setzen der Lizenz“ im Abschnitt SDK beschrieben.
- Sofern Sie DeepER verwenden möchten, setzten Sie auch folgenden Variablen in TextRecognitionWithDeepErTests.mm auf die Ihnen zur Verfügung gestellten Werte.
#define cibOcrDeeperUrlProduction @"REQUEST FROM CIB SUPPORT" #define cibOcrDeeperProductionAuthentication @"REQUEST FROM CIB SUPPORT"
4.4. Ausgabedateien
Der Pfad der Ausgaben wird in der Ausgabe von Xcode ausgegeben.