跳至內容。

使用者模式的 API 範例

當識別具有非字典字詞但遵循特定字母和數字模式的 ID 類型欄位時,使用者模式非常有用,例如 \A\A\d\d\d\d\A\A\A\d\d\d\A

本文件提供一個簡單範例,說明如何在 C++ 中使用 tesseract-ocr API (4.x) 來應用使用者模式以改進識別。預期 tesseract-ocr 已正確安裝,包括所有依賴項。預期使用者熟悉 C++,並且了解如何在他們的平台上編譯和連結程式。

這是基於 tesseract-ocr 論壇中提供的範例,並針對 tesseract 4.x 最近實現的功能進行更新。

請注意,雖然此範例在應用 user_patterns 後達到 100% 的準確度,但情況可能並非總是如此。使用者模式(如使用者字典)僅在解碼時作為提示應用,而不是獨佔應用。預先處理影像通常可以提高識別品質,因此建議使用。

需求

為了應用使用者模式以改進識別,需要以下條件。

使用者模式檔案

使用者模式檔案應包含每行一個模式,格式為 UTF-8。在選擇要包含的模式時,請注意提供非常通用的模式會使 tesseract 執行速度變慢。最好的結果可能是檔案中只有一個模式。

可使用模式的類型詳細資訊在 trie.h 中給出。

使用者模式檔案範例

建立一個文字檔案,並在單獨的行上寫入每個模式,使用 UNIX 行尾符號(換行符),並在末尾留一個空白行,例如

\A\A\d\d\d\d\A

在下文中,假設您將該模式檔案命名為 path/to/my.patterns

組態檔案

對於 API,關於使用者模式檔案的資訊需要在組態檔案中指定。

(對於 CLI,這也適用,但也有一個僅用於使用者模式檔案的直接選項。)

組態檔案範例

建立一個文字檔案,並逐字寫入 user_patterns_file,後面跟著路徑名稱(在一行中),使用 UNIX 行尾符號(換行符),並在末尾留一個空白行,例如

user_patterns_file path/to/my.patterns

在下文中,假設您將該組態檔案命名為 path/to/my.patterns.config

CLI 範例

從命令行,可以如下調用使用者模式

tesseract input.tif output --user-patterns path/to/my.patterns

API 範例

將以下影像檔案 (Arial.png) 作為輸入

以下程式碼在該影像檔案上使用上述使用者模式檔案組態檔案

#include <tesseract/baseapi.h>
#include <leptonica/allheaders.h>

int main()
{
    Pix *image;
    char *outText;
    char *configs[]={"path/to/my.patterns.config"};
    int configs_size = 1;
    tesseract::TessBaseAPI *api = new tesseract::TessBaseAPI();
    if (api->Init(NULL, "eng", tesseract::OEM_LSTM_ONLY, configs, configs_size, NULL, NULL, false)) {
      fprintf(stderr, "Could not initialize tesseract.\n");
      exit(1);
    }
    image = pixRead("Arial.png");
    api->SetImage(image);
    outText = api->GetUTF8Text();
    printf(outText);
    api->End();
    delete api;
    delete [] outText;
    pixDestroy(&image);
    return 0;
}

建置和執行腳本

#!/bin/bash

export CPLUS_INCLUDE_PATH=$CPLUS_INCLUDE_PATH:/usr/local/include
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib

g++ -std=c++17  -o my.patterns.api my.patterns.api.cpp   -llept -ltesseract

export TESSDATA_PREFIX=~/tessdata_best

./my.patterns.api > Arial-patterns.txt

diff -u  Arial-patterns.txt  Arial-gt.txt

使用此影像的使用者模式檔案,識別的準確度為 100%。如果沒有它,則會出現許多錯誤

--- Arial-patterns-no.txt       2019-07-05 04:21:04.367188492 +0000
+++ Arial-gt.txt        2019-07-05 04:05:11.000000000 +0000
@@ -1,20 +1,20 @@
 DQ2679M
 LO6217I
 QK2101G
-JBO363H
+JB0363H
 KN2873M
-Z2B0929J
+ZB0929J
 JF3829W
-YNO0584J
-SVv8400Q
+YN0584J
+SV8400Q
 FY4523X
 KS0016J
 OB3016R
 VA4335P
-QHO205V
-UH20932
+QH0205V
+UH2093Z
 GW3760Y
-S02306T
+SO2306T
 XT8204F
-MR6804|
-0OX5866M
+MR6804I
+OX5866M