よくある質問
テストが非常に遅い
@wdio/ocr-service
を使用する場合、テストを高速化するために使用するのではなく、ウェブ/モバイルアプリで要素を見つけるのが難しく、それらを見つけるためのより簡単な方法が欲しいから使用します。そして私たち全員が願わくば知っているように、何かを得るためには何か他のものを失うことになります。しかし...、@wdio/ocr-service
を通常より速く実行する方法があります。詳細はこちらで見つけることができます。
このサービスのコマンドをデフォルトのWebdriverIOコマンド/セレクタと一緒に使用できますか?
はい、コマンドを組み合わせることでスクリプトをさらに強力にすることができます!アドバイスとしては、可能な限りデフォルトのWebdriverIOコマンド/セレクタを使用し、一意のセレクタが見つからない場合や、セレクタが非常に脆弱になる場合にのみこのサービスを使用することです。
テキストが見つかりません、なぜですか?
まず、このモジュールのOCRプロセスの仕組みを理解することが重要です。こちらのページをお読みください。それでもテキストが見つからない場合は、次のことを試してみてください。
画像領域が大きすぎる
モジュールがスクリーンショットの広い範囲を処理する必要がある場合、テキストが見つからないことがあります。コマンドを使用する際にhaystackを提供することで、より小さな領域を指定できます。haystackの提供をサポートするコマンドについてはコマンドをご確認ください。
テキストと背景のコントラストが適切ではない
これは、白い背景に薄いテキストや暗い背景に暗いテキストがある場合があることを意味します。これによりテキストが見つからない場合があります。以下の例では、Why WebdriverIO?
というテキストが白色で、グレーのボタンに囲まれています。この場合、Why WebdriverIO?
というテキストが見つかりません。特定のコマンドのコントラストを上げることで、テキストが見つかりクリックできるようになります(2番目の画像を参照)。
await driver.ocrClickOnText({
haystack: { height: 44, width: 1108, x: 129, y: 590 },
text: "WebdriverIO?",
// // デフォルトのコントラスト0.25では、テキストが見つかりません
contrast: 1,
});
要素がクリックされてもモバイルデバイスでキーボードが表示されないのはなぜですか?
これは、クリックが長すぎると判断され、長押しと見なされるテキストフィールドで発生することがあります。ocrClickOnText
およびocrSetValue
のclickDuration
オプションを使用してこの問題を軽減できます。こちらを参照してください。
このモジュールは通常のWebdriverIOのように複数の要素を返すことができますか?
いいえ、現在これは不可能です。モジュールが提供されたセレクタに一致する複数の要素を見つけた場合、自動的に最も高いマッチングスコアを持つ要素を見つけます。
このサービスが提供するOCRコマンドでアプリを完全に自動化できますか?
私は試したことがありませんが、理論的には可能なはずです。成功した場合は教えてください☺️。
{languageCode}.traineddata
という追加ファイルが見えますが、これは何ですか?
{languageCode}.traineddata
はTesseractによって使用される言語データファイルです。選択された言語のトレーニングデータが含まれており、Tesseractが英語の文字や単語を効果的に認識するために必要な情報が含まれています。
{languageCode}.traineddata
の内容
このファイルには一般的に以下が含まれています:
- 文字セットデータ: 英語の文字に関する情報。
- 言語モデル: 文字がどのように単語を形成し、単語がどのように文を形成するかの統計モデル。
- 特徴抽出器: 文字を認識するための画像から特徴を抽出する方法に関するデータ。
- トレーニングデータ: 大量の英語テキスト画像でTesseractをトレーニングすることから得られたデータ。
なぜ{languageCode}.traineddata
が重要なのか?
- 言語認識: Tesseractは特定の言語でテキストを正確に認識し処理するために、これらのトレーニングされたデータファイルに依存しています。
{languageCode}.traineddata
がなければ、Tesseractは英語のテキストを認識できません。 - パフォーマンス: OCRの品質と精度は、トレーニングデータの品質に直接関係しています。正しいトレーニングデータファイルを使用することで、OCRプロセスができるだけ正確になるようにします。
- 互換性:
{languageCode}.traineddata
ファイルをプロジェクトに含めることで、異なるシステムやチームメンバーのマシン間でOCR環境の複製が容易になります。
{languageCode}.traineddata
のバージョン管理
以下の理由から、{languageCode}.traineddata
をバージョン管理システムに含めることをお勧めします:
- 一貫性: すべてのチームメンバーまたはデプロイメント環境が、トレーニングデータの同じバージョンを使用することを保証し、異なる環境間で一貫したOCR結果をもたらします。
- 再現性: このファイルをバージョン管理に保存することで、後日または異なるマシンでOCRプロセスを実行する際に結果を再現しやすくなります。
- 依存関係管理: バージョン管理システムに含めることで、依存関係の管理が容易になり、セットアップまたは環境設定にプロジェクトが正しく実行するために必要なファイルが含まれていることを確認します。
テストを実行せずに画面で見つかるテキストを簡単に確認する方法はありますか?
はい、そのためにCLIウィザードを使用できます。ドキュメントはこちらで見つけることができます。