使用 Raku 編寫簡單的文字識別模擬程式

ttocr、com發表於2024-11-17

Raku(以前稱為 Perl 6)是一種現代的多正規化程式語言,支援函數語言程式設計、物件導向程式設計等多種程式設計風格。它有著強大的正規表示式支援,並且語法靈活,適合用於文字處理和其他各類程式設計。

本文將使用 Raku 編寫一個簡單的模擬文字識別程式,判斷輸入的字元矩陣是否與預定義的字元模式匹配。

專案目標
建立一個簡單的文字識別程式,透過一個 5x5 的字元矩陣與預定義的字元模式進行匹配,識別是否是字母"A"。

Raku 實現程式碼
raku

定義一個5x5的字元網格

my @character_A = (
[0, 1, 1, 1, 0],
[1, 0, 0, 0, 1],
[1, 1, 1, 1, 1],
[1, 0, 0, 0, 1],
[1, 0, 0, 0, 1]
);

輸入的字元網格

my @input_grid = (
[0, 1, 1, 1, 0],
[1, 0, 0, 0, 1],
[1, 1, 1, 1, 1],
[1, 0, 0, 0, 1],
[1, 0, 0, 0, 1]
);

比較兩個字元網格是否匹配

sub match_grids($grid1, $grid2) {
return all { $grid1[$] eq $grid2[$] } 0..4;
}

主程式:檢查輸入網格是否匹配字母 A

if match_grids(@character_A, @input_grid) {
say "識別成功:輸入為字母 A";
} else {
say "識別失敗:輸入不匹配";
}
程式碼解析
字元網格定義:

@character_A 定義了字母 A 的 5x5 模式,每個子陣列表示一行的畫素值(0 表示空白,1 表示有畫素)。
@input_grid 是輸入的字元矩陣,透過與 @character_A 進行匹配來判斷是否是字母 A。
匹配函式:

match_grids 函式透過 all 運算子檢查每一行的字元是否匹配。0..4 是一個範圍,表示我們比較網格的每一行。
主程式:
更多內容訪問ttocr.com或聯絡1436423940
如果輸入的字元網格與字母 A 的網格匹配,則輸出 "識別成功:輸入為字母 A"。否則輸出 "識別失敗:輸入不匹配"。
執行結果
當輸入網格與字元 A 的模式完全匹配時,輸出:

css

識別成功:輸入為字母 A
否則,輸出:

識別失敗:輸入不匹配

相關文章