SikulixまたはOpenCVで複数画像のどれか一つが画面内にあるかを高速に判定するロジックはあるのでしょうか。

社内で使用している社外製ERPパッケージに対してRPAもどきの自動処理をするため、Sikulixで簡単な画像認識を行っています。
画面内に表示される特定のアイコンを検知して、そのアイコンの座標をもとに次の処理を行うロジックになっているのですが速度が遅いので改善方法を探しています。
特定のアイコンは画面のどこに表示されるか分かりません。
そして特定のアイコンは12種類であり、そのうちの1つがランダムに表示されるのを検知しなければいけません。

今は12種類のアイコンをループで回して画面内で存在チェックしています。
exists関数のコストが高く、当然ですがアイコンが存在しない場合にはループを全て回すため最も処理時間が長くなります。

下記のコードでは擬似的に0-9をアイコンに見立てて存在チェックをしています。
0-9の数字をそれぞれ0.pngなど画像化してsikuliのプロジェクトフォルダに配置し、Notepadにランダムな数字を表示することでどのアイコンが表示されているかを判定します。
手元の環境では約30秒かかります。

import random

app = App("notepad.exe")
app.focus()
reg = Region(App.focusedWindow())
#画面内のどこかに任意のアイコンが表示されることを再現する疑似コード
type(str(random.randint(0, 9)))
start = time.time()

#複数種類のアイコンが存在するかチェックする疑似コード
for i in range(10):
    #ループしながらexistsを回すため処理時間が長い(サンプルコードのため0-9.pngにそれぞれの数字のキャプチャを入れている)
    if reg.exists("{}.png".format(i)) != None:
        #データがあれば処理を継続する
        print(i)
    else:
        print('not exists')
elapsed = time.time() - start
print(elapsed)

n件の画像の配列または複数画像を連結した画像に対して、高速に存在チェックをするロジックがあればご教示ください。