C#-Beispiele gelten nur für FRE unter Windows.
Erkennen von Häkchen im Bild
C#-Code
C#-Code
- Erkennen einer Häkchengruppe
- Erkennen eines einzelnen Häkchens
- Trainieren der Erkennung von Häkchen eines benutzerdefinierten Typs
Erkennen einer Gruppe von Häkchen
- den Häkchentyp korrekt festzulegen, da Häkchen vom Typ CMT_Circle und CMT_Square einen schwarzen Rahmen haben, der bei der Berechnung des Prozentsatzes berücksichtigt werden muss;
- die Region des Häkchens exakt anzugeben, da der Anteil schwarzer Pixel über die gesamte Region berechnet wird und die Schätzung ungenauer werden kann, wenn irrelevante Bereiche in die Region einbezogen werden.
- Erstellen Sie ein Objekt FRDocument aus einem Bild mit einer Häkchengruppe. Sie können beispielsweise die Methode CreateFRDocumentFromImage des Objekts Engine verwenden.
- Rufen Sie die Seite mit dem Bild der Häkchen aus der Seitensammlung des Dokuments ab (IFRDocument::Pages) — verwenden Sie dazu die Eigenschaften und Methoden der Sammlung FRPages.
- Rufen Sie das Objekt Layout ab, das dieser Seite über die Eigenschaft IFRPage::Layout zugeordnet ist.
- Für jede Häkchengruppe:
- Erstellen Sie ein Objekt Region mit der Methode IEngine::CreateRegion und fügen Sie ihm mit der Methode IRegion::AddRect Rechtecke hinzu.
- Erstellen Sie ein Objekt Block vom Typ Häkchengruppe und fügen Sie es mithilfe der Methode ILayoutBlocks::AddNew in die Sammlung der Layout-Blöcke (ILayout::Blocks) ein (verwenden Sie die Konstante BT_CheckmarkGroup und das erstellte Region-Objekt als Eingabeparameter. Die Methode erfordert außerdem den Blockindex im Layout als dritten Eingabeparameter).
- Rufen Sie das CheckmarkGroup-Objekt ab (verwenden Sie die Methode IBlock::GetAsCheckmarkGroup).
- Für jedes Häkchen in der Gruppe:
- Erstellen Sie das Region-Objekt mit der Methode IEngine::CreateRegion und fügen Sie ihm mit der Methode IRegion::AddRect Rechtecke hinzu.
- Erstellen Sie mit der Methode ICheckmarkGroup::AddNew einen neuen Häkchenblock in der Gruppe (verwenden Sie das erstellte Region-Objekt als Eingabeparameter).
- Rufen Sie das CheckmarkBlock-Objekt ab (verwenden Sie dazu die Methode IBlock::GetAsCheckmarkBlock) und setzen Sie die erforderlichen Parameter (CheckmarkType, IsCorrectionEnabled).
- Setzen Sie die erforderlichen Parameter der Häkchengruppe (MinimumCheckedInGroup, MaximumCheckedInGroup).
- Verwenden Sie zum Erkennen der Häkchen eine der verfügbaren Erkennungsmethoden, z. B. IFRPage::Recognize, IFRPage::RecognizeBlocks, IFRDocument::Recognize, IFRDocument::RecognizePages usw.
C#-Code
C#-Code
Erkennung eines einzelnen Häkchens
- Erstellen Sie aus einem Bild mit einem Häkchen ein FRDocument-Objekt. Dazu können Sie beispielsweise die Methode CreateFRDocumentFromImage des Engine-Objekts verwenden.
- Rufen Sie die Seite mit dem Bild der Häkchen aus der Seitensammlung des Dokuments ab (IFRDocument::Pages) — verwenden Sie dazu die Eigenschaften und Methoden der FRPages-Sammlung.
- Rufen Sie über die Eigenschaft IFRPage::Layout das Layout-Objekt ab, das dieser Seite entspricht.
- Erstellen Sie das Objekt Region mit der Methode IEngine::CreateRegion und fügen Sie ihm mit der Methode IRegion::AddRect Rechtecke hinzu.
- Erstellen Sie ein Block-Objekt vom Typ Häkchen und fügen Sie es mit der Methode ILayoutBlocks::AddNew in die Sammlung der Layout-Blöcke (ILayout::Blocks) ein (verwenden Sie die Konstante BT_Checkmark und das erstellte Region-Objekt als Eingabeparameter).
- Rufen Sie das CheckmarkBlock-Objekt ab (verwenden Sie dazu die Methode IBlock::GetAsCheckmarkBlock) und setzen Sie die erforderlichen Parameter (CheckmarkType, IsCorrectionEnabled).
- Um das Häkchen zu erkennen, verwenden Sie eine der verfügbaren Erkennungsmethoden, z. B. IFRPage::Recognize, IFRPage::RecognizeBlocks, IFRDocument::Recognize, IFRDocument::RecognizePages usw.
C#-Code
C#-Code
Erkennung benutzerdefinierter Häkchen trainieren
- Suchen Sie ein Bild mit einigen nicht markierten Häkchen des Typs, den Sie erkennen möchten. Das kann beispielsweise ein Bild eines leeren Formulars sein, das diese Häkchen enthält.
- Erstellen Sie aus diesem Bild ein FRDocument-Objekt. Sie können dazu beispielsweise die Methode CreateFRDocumentFromImage des Engine-Objekts verwenden.
- Rufen Sie die Seite mit dem Bild der Häkchen aus der Seitensammlung des Dokuments ab (IFRDocument::Pages) — verwenden Sie dazu die Eigenschaften und Methoden der Sammlung FRPages.
- Rufen Sie das Layout-Objekt für diese Seite über die Eigenschaft IFRPage::Layout ab.
- Geben Sie die Region und den Typ jedes Häkchenblocks auf der Seite an:
- Erstellen Sie das Objekt Region mit der Methode IEngine::CreateRegion und fügen Sie ihm mit der Methode IRegion::AddRect die Rechtecke einer Häkchenregion hinzu.
- Erstellen Sie ein Block-Objekt vom Typ Häkchen und fügen Sie es mithilfe der Methode ILayoutBlocks::AddNew in die Sammlung der Layout-Blöcke (ILayout::Blocks) ein (verwenden Sie die Konstante BT_Checkmark und das erstellte Region-Objekt als Eingabeparameter).
- Rufen Sie das CheckmarkBlock-Objekt ab (verwenden Sie dazu die Methode IBlock::GetAsCheckmarkBlock) und setzen Sie seine Eigenschaft CheckmarkType auf CMT_Custom.
- Trainieren Sie FineReader Engine so, dass diese Art von Häkchen erkannt wird: Rufen Sie dazu die Methode LearnCheckmarks des FRPage-Objekts auf.
- Dadurch enthält die Eigenschaft TrainingData des CheckmarkBlock-Objekts, das Sie vor dem Training erstellt haben, Informationen über den benutzerdefinierten Häkchentyp. Diese Informationen können nun verwendet werden, um andere Häkchen desselben Typs zu erkennen. Sie können sie mit der Methode SaveToMemory (nur Windows) oder der Methode SaveToFile des Objekts CheckmarkTrainingData in einer Datei oder im Speicher speichern.
- Erstellen Sie FRDocument-Objekte aus den Bildern, die Häkchen dieses Typs enthalten, geben Sie Häkchenblöcke auf den Seiten an und setzen Sie den Häkchentyp auf CMT_Custom. Das Verfahren ist in den Schritten 2 bis 5 beschrieben.
- Initialisieren Sie die Eigenschaft TrainingData jedes CheckmarkBlock-Objekts mit dem CheckmarkTrainingData-Objekt, das beim Training erzeugt wurde. Sie können das Objekt beispielsweise mit der Methode CopyFrom kopieren oder es mit der Methode LoadFromMemory (nur Windows) oder der Methode LoadFromFile des CheckmarkTrainingData-Objekts aus einer Datei oder aus dem Speicher laden.
- Rufen Sie eine beliebige Erkennungsmethode des FRDocument- oder FRPage-Objekts auf, z. B. die Methode IFRDocument::Recognize.
- Mit den Eigenschaften BlackThreshold und SuspiciousDistance des CheckmarkBlock-Objekts können Sie die Einstellungen weiter anpassen, wenn Sie mit den Erkennungsergebnissen nicht zufrieden sind. Nach dem Training werden die Standardwerte dieser Eigenschaften durch Werte ersetzt, die in den meisten Fällen voraussichtlich funktionieren. Wenn Sie das CheckmarkTrainingData-Objekt für einen Häkchenblock laden, werden auch die Werte dieser Eigenschaften geladen. Sie können mit geänderten Werten dieser Eigenschaften experimentieren und die Häkchen erneut erkennen lassen (Schritt 10 wiederholen). Wenn Sie die beste Konfiguration gefunden haben, speichern Sie das CheckmarkTrainingData-Objekt erneut und verwenden das neue Objekt, um Häkchen Ihres benutzerdefinierten Typs zu erkennen.
