この記事で扱っていること
- 翻訳アプリを作る方法
を紹介しています。
注意:すべてのエラーを確認しているわけではないので、記事の内容を実装する際には自己責任でお願いします。また、エラー配線は適当な部分があるので適宜修正してください。
LabVIEWで文字情報を扱うには、ファイルから読み取ったり、あるいはカメラで読み取った画像にある文字をOCRで読み取るといった方法があります。(前者はLabVIEW単体で行えるのに対し後者はVision Development Moduleというアドオンが必要になります)
本記事では、そんな文字情報を翻訳する機能をプログラムの中に盛り込む方法の例を紹介します。
残念ながら(?)LabVIEWの関数でそのような機能はないのですが、代わりに公開されているAPIを用いて実装します。
今回は、Deeplという翻訳サイトが公開しているAPIを使用していきます。
どんな結果になるか
フロントパネルには、APIを使用するための認証キーの入力と、翻訳したい言葉、および何語に翻訳したいかの設定を行う制御器を配置しています。
本来認証キーは他人に知られていいものではないのでこれは定数にしてもかまいません。

プログラムを実行すると、英語が日本語に翻訳されるのがわかります。
右下のbodyでは文字化けしてしまうのですが、この理由はわかりません・・・。

ただし、この方法だと、翻訳が上手くされない場合があります。
例えば日本語を英語にする場合にtranslatedの部分でも文字化けしてしまいます。

後述する別の実装方法ではうまく翻訳できるようになります。
プログラムの構造
Viの説明に入る前に、Deepl側でAPIを使えるようにしておく必要があります。
詳しくはDeeplのページを参考にしてもらえればいいのですが、無料版とプロ版があります。一か月の間で翻訳できる文字数制限がありますが、無料版でも特に問題なく使用できます。
登録の流れは以下の通りです。
まずはDeeplのページにアクセスします。

登録したいメールアドレスやパスワードを指定します。

あとは個人情報を入力していきます。

その後プランの利用条件を確認します。
プランは有償プランもありますが、本記事では無料プランで進めていきます。

登録が終わったら指定したメールアドレスに確認メールが届くのでそちらからアカウントを確定させます。

確定後、アカウントにログインします。

ログインしたら「アカウント」のタブに進み、ページ下部にある認証キーをコピーします。
これがフロントパネルのauth keyの部分にペーストすることになります。

さて、このような形で認証キーを取得したら、これを使用するviを作ります。と言っても、POSTリクエストを行うだけで、プログラム自体はシンプルです。
注意点としては、JSONから非平坦化する際の指定で「クラスタの配列」のクラスタを用意することくらいでしょうか。ラベル(「detected_source_language」や「text」、「translations」)もJSON文字列に表れる表現に合わせます。

上にも書きましたが、auth keyであるAPIを使用するための認証キーはむやみに公開するキーではないため、制御器にするのではなく定数にしてしまうのでも問題ありません。
Pythonと組み合わせた方法
さて、上記のプログラムは動くには動くのですが、冒頭で紹介したように英語を日本語にしようとするときなどに文字化けが発生しうまく結果が得られません。
一方で、この翻訳の部分をPythonコードで実装すると文字化けも起こらずに翻訳ができるようになったので、こちらの方が便利かと思います。

PythonコードでもPOSTリクエストを送ることに変わりはありません。
Pythonでの実装の一例は以下の通りです。

あとはこのPythonコードをLabVIEWで呼び出します。
「じゃあLabVIEW使わずにPythonだけでいいのでは?」なんて声も聞こえてきそうですが、LabVIEWで実装した他の機能(例えばOCRなど)とセットで使用するときには役立つと思うので参考にしてみてください。

なお、Pythonコードの呼び出し方の基本的なやり方は以下のページで紹介しています。
この記事では、DeeplのAPIを使用して翻訳機能をLabVIEWに実装する例を紹介しました。
世の中にある様々なサービスに対し、このようにAPIが用意されていることでプログラムの中で活用できるのはとても便利ですね。とはいえ正しく実装できないと活用できないので、APIの使い方がわからない、というときに参考にしてもらえると嬉しいです。
ここまで読んでいただきありがとうございました。
コメント