使用者模式的 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