Mais conteúdo relacionado
呪符式高速詠唱シェル芸2
- 10. 編集距離の例
abc と abd の編集距離は置換が1回なので、1もしくは1/3=0.3333....
置換を挿入=>削除と考えて操作回数2回とする場合もある
- 21. レーベンシュタイン距離による補正の疑似コード
var input = "呪文";
var dictionary = { ... yukichantの単語辞書 ... };
while(input.Length > 0) {
var minDistance = 999;
var result = "";
foreach(var length in {6,5,4,2,3}) {
var subStr = input[..length];
// 同じ長さの単語群と切り出した文字列を比較
foreach(var word in dictionary[length]) {
// 距離が最小になるものを見つける。
// 距離が一緒なものが複数個あったときはどないしようかなあ
var distance = Levenshtein(subStr, word);
if(distance < minDistance) {
minDistance = distance;
result = word;
}
}
}
input = input[length..];
}
- 35. 集計したら実装
レーベンシュタイン距離での補正をする前に誤認識テーブルでの補正をします
while(input.Length > 0) {
var minDistance = 999;
var result = "";
foreach(var length in {6,5,4,2,3}) {
var subStr = input[..length];
// 誤認識テーブルで補正を書けて候補を作る
var list = createAdjustedWords(subStr);
foreach(var item in list) {
foreach(var word in dictionary[length]) {
var distance = Levenshtein(item, word);
if(distance < minDistance) {
// ...
}
}
}
}
input = input[length..];
}
- 37. というわけで
デモをします
# なんもなし
$ cd ~/source/repos/ofuda/cli-tesseract-ocr; dotnet run -- ../img/tegaki-yoko-2gyo.png --tesseractPath C:UsersxztaityozxAppDataLocalProgramsTesseract-OCRtesseract.exe
# レーベンシュタイン距離のみ
$ cd ~/source/repos/chant-gate/chant-gate; dotnet run -- ../../ofuda/tegaki-yoko-2gyo.png --ocr-engine Tesseract
# 誤認識テーブル+レーベンシュタイン距離
$ cd ~/source/repos/chant-gate/chant-gate; dotnet run -- ../../ofuda/tegaki-yoko-2gyo.png --ocr-engine Tesseract -c