Einsatz CIB Module unter iOS technischer Leitfaden (DE)

3. SDK

3.3. Ansteuerung

Allgemein
CIB 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:

  1. Laden der Bibliothek und aller Abhängigkeiten.
    • Muss lediglich einmalig je Laufzeit vorgenommen werden.
  2. Erstellen eines Jobs.
  3. Setzen von Properties für diesen Job.
  4. Ausführung des Jobs.
  5. Abholen der Ergebnisse.
  6. 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:

  1. Laden der Bibliothek und aller Abhängigkeiten.
    • Wird implizit durch das System vorgenommen.
  2. Erstellen eines Jobs.
  3. DXPDFToolboxJob *job = [[DXPDFToolboxJob alloc] init];
  4. 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.
    [job setValue:value forProperty:name];
  5. Ausführung des Jobs.
  6. BOOL success = [job execute];
  7. 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:
    NSString *result = [job valueForProperty:name];
  8. Fehlercodes und Meldungen sind hier zu finden:
  9. job.error.code;
    job.error.userInfo;
  10. Freigeben des Jobs.
    • Wird implizit vorgenommen.

CIB pdfModule

  • doXisafeBase/DXPDFModuleJob
  • doXisafeBase/COMod

Beispiele für die einzelnen Schritte:

  1. Laden der Bibliothek und aller Abhängigkeiten.
    • Wird implizit durch das System vorgenommen.
  2. Erstellen eines Jobs.
  3. DXPDFToolboxJob *job = [[DXPDFModuleJob alloc] init];
  4. 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.
    [job setValue:value forProperty:name];
  5. Ausführung des Jobs.
  6. BOOL success = [job execute];
  7. 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:
    String *result = job.getProperty(name)
  8. Fehlercodes und Meldungen sind hier zu finden:
  9. job.error.code;
    job.error.userInfo;
  10. Freigeben des Jobs.
    • Wird implizit vorgenommen.

CIB image toolbox

  • doXisafeBase/DXIPLProcessingJob
  • doXisafeBase/COMod

Beispiele für die einzelnen Schritte:

  1. Laden der Bibliothek und aller Abhängigkeiten.
    • Wird implizit durch das System vorgenommen.
  2. Erstellen eines Jobs.
  3. DXIPLProcessingJob *job = [[DXIPLProcessingJob alloc] init];
  4. 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.
    • [job setValue:value forProperty:name];
    • „UIImages“ können als Input wie folgt übergeben werden.

    UIImage *uiImage = [UIImage imageNamed:pathFile];

    [job addInputUiImage: uiImage];

  5. Ausführung des Jobs.
  6. BOOL success = [job execute];
  7. 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:
    • NSString *result = [job valueForProperty:name];
    • Falls das Ergebnis wiederum eine Bitmap ist, kann diese wie folgt abgeholt werden./li>
      UIImage *uiImageResult = [job getOutputUiImage];
  8. Fehlercodes und Meldungen sind hier zu finden:
    job.error.code;
    job.error.userInfo;
  9. Freigeben des Jobs.
    • Wird implizit vorgenommen.

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:

  1. Laden der Bibliothek und aller Abhängigkeiten.
    • Wird implizit durch das System vorgenommen.
  2. Erstellen eines Jobs.
  3. DXOCRJob *job = [[DXOCRJob alloc] init];

  4. 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.
    [job setValue:value forProperty:name];
  5. Ausführung des Jobs.
  6. BOOL success = [job execute];
  7. 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:

    NSString *result = [job valueForProperty:name];

  8. Fehlercodes und Meldungen sind hier zu finden:
  9. job.error.code;
    job.error.userInfo;
  10. Freigeben des Jobs.
    • Wird implizit vorgenommen.

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"];