LoginSignup
7
5

[翻訳自動化]イメージファイルからテキストを抽出し、翻訳する

Posted at

背景

仕様書や論文を読んでいくとき、わからない英文をコピペしては、翻訳、コピペしては、翻訳、、、大変面倒です。さらにイメージファイルではコピペができない!そんなわけで、翻訳の自動化を試みました。

使用技術

MATLAB
基本的な実装のために使用しました
Computer Vision toolbox
MATLABでOCRを使用するために使用しました
Google Apps Script
Google翻訳のAPIを実装するために使用しました

実装方法

下記を実装することで実現しました。
1. OCRによるイメージファイルからのテキスト抽出実装
2. GASによるGoogle翻訳APIを実装
3. MATLABからGASの実行

1.OCRによるイメージファイルからのテキスト抽出実装

Computer Vision toolboxの関数である「ocr」を使用してイメージファイルを読み込みテキストを取得します。

今回読み込むサンプル(example.comのスクショ)
example.png

下記MATLABコードでイメージファイルを読み込みます

ocr.m
    % イメージファイルの読み込み(pngFileName:イメージファイルのパスを入力)
    pngFileInfo = imread(pngFileName);
    
    % 読み込んだイメージファイルを使用しOCRでテキストを抽出
    pngObj = ocr(pngFileInfo);
    
    % テキスト取得
    targetText = pngObj.Text;

2.GASによるGoogle翻訳APIを実装

取得したテキスト情報(targetText)をGoogle翻訳にかけるためのAPIをGASで実装します。
こちらの素晴らしい記事を パクらせて 参考にさせていただきました。
https://qiita.com/tanabee/items/c79c5c28ba0537112922

googleTransAPI.gs
function doGet(e) {
  var p = e.parameter;
  var translatedText = LanguageApp.translate(p.text, p.source, p.target);
  return ContentService.createTextOutput(translatedText);
}

このコードをデプロイし、Google翻訳APIのURLを作成しました。

3.MATLABからGASの実行

MATLABによって今回抽出したテキストデータをURLに設定し、
GETメソッドによるHTTPリクエストを実施します。

request.m
    % google翻訳のGAS APIにアクセスする
    % HTTPリクエストを送るurlを作成する
    base = ['https://script.google.com/macros/s' ...
            '/AKfycbw57UQkAv2Yhqzr-0n2USD2STnS_yGn8SYkABTLxCZemKxbE' ...
            'z8YIbMjdFhTyjkPEaw73A/exec'];

    % English → Japanese
    sourceLang = 'en';
    targetLang = 'ja';
    url = strcat(base, '?text=', targetText ,'&source=', sourceLang, '&target=', targetLang);

    %GASにてリクエスト→結果表示
    web(url);

結果表示

上記のmスクリプトを関数化しました。引数にはpngファイルのパスを指定します。
スクリーンショット 2024-02-05 220043.png

自動で翻訳が完了しました。
ret.png

あとがき

仕様書や論文のファイル形式はPDF形式が多く、PDFに対応したかったですが、、、、
もうちょっと掘り下げてPDFにも対応して再度投稿しようと思います。

㎰.GASを初めて触りましたが、便利ですね、、、Googleアカウントがあればほぼ100%使えますし、興味が出てきました。業務効率化のためキャッチアップしようと思います!

以上です!

7
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
5