Zum Hauptinhalt springen
ABBYY FineReader Engine unterstützt derzeit kein arabisches ICR. Die Erkennung arabischer Ziffern ist jedoch möglich, und dieser Artikel beschreibt die dafür erforderlichen Schritte. Zusätzlich zu dem in Handschriftliche Texte erkennen beschriebenen Verfahren müssen Sie für die Erkennung arabischer Ziffern eine benutzerdefinierte Sprache mit einem Alphabet erstellen, das nur aus 10 Ziffernzeichen besteht, und diese als Erkennungssprache für jeden Block mit Ziffern festlegen. Gehen Sie daher wie folgt vor, um handgeschriebene arabische Ziffern zu erkennen:
  1. Erstellen Sie mit der Methode CreateTextLanguage des Objekts LanguageDatabase eine neue Textsprache.
  2. Legen Sie mithilfe der Eigenschaft LetterSet des Objekts BaseLanguage innerhalb des TextLanguage-Objekts das Alphabet der Sprache fest, das die folgenden Zeichen enthält: ٠١٢٣٤٥٦٧٨٩.
  3. Geben Sie für jeden Block mit handgeschriebenen arabischen Ziffern über die Eigenschaft ITextBlock::RecognizerParams die Erkennungsparameter an:
    • Setzen Sie die Eigenschaft TextLanguage des Objekts RecognizerParams auf die Sprache, die Sie im vorherigen Schritt erstellt haben.
    • Setzen Sie die Eigenschaft TextTypes des RecognizerParams-Objekts auf TT_Handwritten.
    • Wenn die Ziffern von einem Rahmen, Kästchen usw. umgeben sind, legen Sie in der Eigenschaft FieldMarkingType des RecognizerParams-Objekts die Art der Markierung um die Zeichen fest. Wenn jede Ziffer in eine separate Zelle geschrieben ist, verwenden Sie außerdem die Eigenschaft CellsCount, um die Anzahl der Zeichenzellen im Block festzulegen.

Windows-Beispiele

// Globales ABBYY FineReader Engine-Objekt
FREngine::IEnginePtr Engine;
...
// Eine Bilddatei öffnen
...
// Eine benutzerdefinierte Sprache erstellen
FREngine::ILanguageDatabasePtr pLanguageDatabase = Engine->CreateLanguageDatabase();
FREngine::ITextLanguagePtr pTextLanguage = pLanguageDatabase->CreateTextLanguage();
FREngine::IBaseLanguagesPtr pBaseLanguages = pTextLanguage->BaseLanguages;
FREngine::IBaseLanguagePtr pBaseLanguage = pBaseLanguages->AddNew();
// Das Alphabet festlegen
pBaseLanguage->put_LetterSet( FREngine::BLLS_Alphabet, L"٠١٢٣٤٥٦٧٨٩" );
// Das Layout-Objekt von der Seite abrufen
FREngine::ILayoutPtr layout = frPage->get_Layout();
// Blockregion festlegen
FREngine::IRegionPtr pRegion = Engine->CreateRegion();
pRegion->AddRect( 491, 314, 2268, 404 );
// Einen neuen Block erstellen
FREngine::IBlockPtr newBlock = layout->Blocks->AddNew( FREngine::BT_Text, pRegion, 0 );
FREngine::ITextBlockPtr textBlock = newBlock->GetAsTextBlock();
// Die benutzerdefinierte Sprache festlegen
textBlock->RecognizerParams->TextLanguage = pTextLanguage;
// Den Texttyp angeben
textBlock->RecognizerParams->TextTypes = FREngine::TT_Handwritten;
// Die Art der Markierung um die Zeichen angeben
textBlock->RecognizerParams->FieldMarkingType = FREngine::FMT_SimpleText;
// Erkennung und Export
...
// Globales ABBYY FineReader Engine-Objekt
FREngine.IEngine engine;
...
// Eine Bilddatei öffnen
...
// Eine benutzerdefinierte Sprache erstellen
FREngine.ILanguageDatabase languageDatabase = engine.CreateLanguageDatabase();
FREngine.ITextLanguage textLanguage = languageDatabase.CreateTextLanguage();
FREngine.IBaseLanguages baseLanguages = textLanguage.BaseLanguages;
FREngine.IBaseLanguage baseLanguage = baseLanguages.AddNew();
// Das Alphabet festlegen
baseLanguage.set_LetterSet( FREngine.BaseLanguageLetterSetEnum.BLLS_Alphabet, "٠١٢٣٤٥٦٧٨٩" );
// Das Layout-Objekt von der Seite abrufen
FREngine.ILayout layout = frPage.Layout;
// Blockregion festlegen
FREngine.IRegion region = engine.CreateRegion();
region.AddRect( 491, 314, 2268, 404 );
// Einen neuen Block erstellen
FREngine.IBlock newBlock = layout.Blocks.AddNew( FREngine.BlockTypeEnum.BT_Text, region, 0 );
FREngine.ITextBlock textBlock = newBlock.GetAsTextBlock();
// Die benutzerdefinierte Sprache festlegen
textBlock.RecognizerParams.TextLanguage = textLanguage;
// Den Texttyp angeben
textBlock.RecognizerParams.TextTypes = (int)FREngine.TextTypeEnum.TT_Handwritten;
// Die Art der Markierung um die Zeichen angeben
textBlock.RecognizerParams.FieldMarkingType = FREngine.FieldMarkingTypeEnum.FMT_SimpleText;
// Erkennung und Export
...

Siehe auch

RecognizerParams Handschriftliche Texte erkennen Arbeiten mit Sprachen