CapCap

はじめに

本ソフトウェアは画面上の文字を読み取り字幕表示するソフトウェアです。
icon_leftclick

動作環境

インストール

アンインストール

ダウンロードしたファイルを削除してください。

通知領域

ファイルを実行するとタスクバーの通知領域にアイコンが表示されます。
icon

アイコンを右クリックするとコンテキストメニューが表示されます。
icon_rightclick

  1. 設定
    本ソフトウェアの設定を行います。
  2. キー設定
    本ソフトウェアのキー設定を行います。
  3. ヘルプ
    ヘルプファイルを開きます。
  4. 終了
    本ソフトウェアの実行を終了します。

左クリックすると画面が少し暗くなり、読み取り領域を設定する状態になります。左クリックでドラッグ&ドロップすることで領域を設定できます。また、右クリックで設定をキャンセルできます。
icon_leftclick

字幕

字幕は左ドラッグ&ドロップで移動できます。
caption_l

自動的に表示を更新することができます(Repeatモード)。
repeat

以下のジェスチャーに対応しています。

ジェスチャー 説明

左ダブルクリック
キャプチャ領域を再度読み出し字幕を更新します。

ホイール
バックログを前進・後退します。

中クリック
表示テキストを切り替えます(原文 ⇔ 訳文)。
+ 表示中のテキストをコピーします。
+ + 表示中のテキストと対になるテキスト(原文 ⇔ 訳文)をコピーします。

右クリックでコンテキストメニューが表示されます。
caption_r

項目 説明
字幕を更新 キャプチャ領域を再度読み出し字幕を更新します。
字幕をクリア 字幕の表示をクリアします。
設定 設定画面を開きます。通知領域のSettingsとの違いは最後に表示していたPresetの扱いが異なります。通知領域のSettingsでは最後に選択していたPresetが標準のPresetになります。一方でこちらのSettingsでは標準のPresetは変更されません。代わりに字幕の設定が最後に選択していたPresetの内容に変更されます。
原文をコピー 読み出したテキストをクリップボードにコピーします。
訳文をコピー 翻訳したテキストをクリップボードにコピーします。
キャプチャ画像をコピー キャプチャしたイメージをクリップボードにコピーします。
OneShot キャプチャモードをOneShotモードに切り替えます。
Repeat キャプチャモードをRepeatモードに切り替えます。
Overlap キャプチャモードをOverlapモードに切り替えます。
字幕を閉じる 字幕を閉じます。

設定画面

Preset設定

settings_00

  1. Presetリスト
    Presetの一覧が表示されます。選択したPresetは背景色が変わり、その内容が右側に表示されます。
    リストにはPresetを一意に識別するためのID(設定不可)とユーザが設定可能なPreset名が表示されます。
  2. サンプルPreset表示
    ✔でPresetリストにサンプルPresetを表示します。
  3. リスト制御ボタン
    左から順にPresetの複製、追加、削除を行います。
  4. トランスレータ設定
    トランスレータ設定 説明
    モード 使用するトランスレータを設定します。Default, HttpPost, Clipboard
    翻訳元言語 テキストの言語および翻訳元の言語を選択します。OCRエンジンが使用可能な言語のみ選択可能です。
    翻訳先言語 翻訳先の言語を選択します。一覧には多くの候補が表示されます。実際にAPIが対応している言語を選択してください。

    Clipboardモードについて

    ClipboardモードではTexTra Clipboardのアプリ間連携機能を使用します。

    TexTra Clipboardについて

    TexTra Clipboardは"様々なアプリ上のテキストを翻訳するアプリケーション"です。みんなの自動翻訳@TexTra[3]の便利アプリとして公開されています。導入・設定および詳細については当該サイトにてご確認ください。
    本ソフトウェアとの連携において必要な設定は以下の通りです。
    設定 > 外部アプリ呼び出し > 他のアプリからの翻訳リクエストを受け付ける
    textra-clipboard_00

  5. キャプチャ設定設定
    キャプチャ設定 説明
    モード キャプチャの動作モードを選択します。
    OneShot: 一度だけキャプチャします。
    Repeat: 周期的にキャプチャします。
    Overlap: キャプチャ範囲と字幕を重ねた状態での表示を可能にします。
    フィルタ 画像処理フィルタを選択します。
    None: フィルタを使用しません。
    Basic: 基本的なフィルタを使用します。

    Overlapモードについて

    Overlapモードは以下のように字幕とキャプチャ範囲を重ねての表示が可能です。
    overlap_capture
    一方で、その他のモードでは字幕はキャプチャ範囲と重ならないように配置されます。
    normal_capture

  6. 字幕設定
    字幕設定 説明
    モード 字幕の表示モードを選択します。
    Text: 一連のテキストを対象として表示します。
    Item: 項目など一行ごとに意味があるものを対象として表示します。
    フォント 字幕で表示されるフォントファミリーを選択します。
    フォントサイズ フォントサイズを入力します。
    文字の色 表示する文字の色を選択します。
    文字のフチ色 表示する文字の縁の色を選択します。
    背景色 字幕の背景色を選択します。

    Textモードについて

    Textモードを選択した場合、文章内の段落分けについて選択することができます。

    • 段落を検出:段落を検出し段落ごとに文章を区切ります
    • 段落間に空行:段落を区切る際に追加で空行を挿入します
      text_paragraph
  7. Accept/Dismessボタン
    入力を承認する場合は✔を、却下する場合は✖を選択します。

HTTP POST設定

モードをDefault以外に選択すると追加の設定を行うためのリンクが表示されます。具体的な設定例については後述のサンプルを参照ください。
settings_01
settings_02

  1. URL
    アクセスするサービスのURLを入力してください。

  2. Header
    サービスへのリクエストヘッダを設定します。右下のボタンでヘッダフィールドの追加・削除を行います。また、リクエストデータのContent-Typeとしてapplication/json, application/x-www-form-urlencodedのいずれかを選択します。

  3. Request
    サービスへのリクエストデータを設定します。右下のボタンでリクエストデータの追加・削除を行います。

    Request Description
    Type Valueの種類を選択します。
    string: 文字列, number: 数値, boolean: 真偽値, source: 翻訳元言語, target: 翻訳先言語, text: 翻訳元テキスト, array: 配列, object: オブジェクト
    Key JSONおよびリクエストクエリのキー(文字列)を設定します。
    Value リクエストのキーに対応する値を設定します。

    source, target, textについて

    source, targetはPresetの設定値、textは読み出したテキストがValueとして設定されます。
    TranslatorSource Language=英語、Target Langugae=日本語、OCRにより認識された文字列が"Sample"の場合、以下の値がValueとして設定されます。
    source: "en", target: "ja", text: "Sample"

    araryおよびobjectについて

    Content-Typeがapplication/jsonの際にJSON ArrayおよびObjectとして扱われます。ValueにはArrayおよびObjectのサイズを設定します。
    以下に設定例とその結果を示します。
    json_settings

    {
       "root": [
          "direct_value",
          {
                "object_key": "object_value"
          },
          {
                "1st_key": {
                   "2nd_key": "2nd_value"
                }
          }
       ]
    }
    
  4. Response
    応答データにアクセスするためのKeyを設定します。右下のボタンでKeyの追加・削除を行います。
    本ソフトウェアでは一つの応答データにのみアクセス可能です。複数のKeyを設定した場合、上から順にアクセス階層が深くなります。
    応答データがObjectではなくArrayの場合はIndexに✔を入れ、Arrayのインデックスを入力してください。

フィルタ設定

FilterをNone以外に選択すると追加の設定を行うためのリンクが表示されます。
settings_03

チェックボックスをクリックし有効・無効を切り替えます。
settings_04

操作 説明
グレースケール化 画像をグレースケール画像に変換します。必ず使用されます。
コントラスト強調 コントラストを強調します。
ガンマ補正 ガンマ補正を行います。スライドが左に行くほど暗く、右に行くほど明るくなります。
二値化 (Otsu) 画像を2値化します。
リサイズ ( × 2) 画像を2倍のサイズに拡大します。対象となる文字が小さい場合に有効です。
CAPTURE キャプチャ範囲を指定します。キャプチャおよび加工した画像が右側に表示されます。

フィルタ(Basic)の設定例

元画像:木々の上に白文字のテキスト
settings_05

CAPTUREで赤枠の範囲を設定します。画像の下にOCRで認識された文字列が表示されます。(背景の木々のせいでテキストがうまく認識されていないことがわかります。)
settings_06

ガンマ補正を有効にし画像を暗め(1→0.4)に加工します。背景と文字列がうまく分離され正しく認識されるようになりました。
settings_07

キー設定画面

トグルスイッチをクリックし有効・無効を切り替えます。このとき無効になったコマンドおよびキー設定はグレーアウトされます。キー設定は入力ボックス上で任意のキーを入力して行います。
keysettings_00

コマンド 説明
字幕を新規作成 字幕を新規に作成します。アイコンをクリックした場合と同じです。
字幕を更新 表示中のすべての字幕を更新します。
字幕を非表示 字幕を非表示にします。再度実行するかもしくは字幕を更新すると字幕が再表示されます。

Info

ホットキーは1つ以上の修飾キー(Control, Alt, Shift, Windows) + 1つのキー(修飾キー以外)の組み合わせが設定可能です。ただし、一部設定できない組み合わせ(Shift + アルファベット or 数字など)や例外的に1つで設定可能なキー(ファンクションキー or テンキーキー)が存在します。

Warning

ホットキーを有効化すると他のアプリケーションでは設定したキーの組み合わせが使用できなくなります。他のアプリケーションで使用したい場合は、キー設定を変更するかホットキーを無効化してください。


HTTP POSTの設定例

Google Apps Script

ここでは一例としてGoogle Apps Scriptを用いる例を紹介します。

Info

Google Apps ScriptはGoogle社の提供するプラットフォームサービスです。

Warning

サービスの利用については別途詳細をご確認の上ご利用ください。

スクリプトのデプロイ

サービスにアクセスしStart Scriptingをクリックし、サービスにログインします。
gas_00

新しいプロジェクトをクリックするとエディタが立ち上がります。
gas_01

エディタに以下の内容[4]を入力(コピー&ペースト)します。

function doPost(e) {
    var p = JSON.parse(e.postData.getDataAsString());
    var translatedText = LanguageApp.translate(p.text, p.source, p.target);
 
    var output = ContentService.createTextOutput();
    output.setMimeType(ContentService.MimeType.JSON);
    output.setContent(JSON.stringify({ result: translatedText }));
 
    return output;
}

gas_02

(オプション)上部のプロジェクト名をクリックし分かりやすい名称に変更します。
gas_03

上部のデプロイをクリックし、新しいデプロイを選択します。
gas_04

デプロイタイプの選択を求められるので、左上の歯車をクリックしウェブアプリを選択します。
gas_05

以下のように項目を選択し、デプロイをクリックします。

gas_06

デプロイが完了すると以下の表示が現れます。
URLはアクセス先として使用するためコピーしておくことを推奨します。
gas_07

ソフトウェアの設定(Google Apps Script)

  1. 設定ウィンドウ左下の"サンプル"に✔を入れ、サンプルPresetを表示します
  2. ID:1 Google Apps Script (en-ja)を選択します
  3. 複製ボタンをクリックしPresetを複製します
  4. 複製されたPresetを選択します
  5. トランスレータ > モードの詳細設定をクリックします
  6. URLにデプロイ時に表示されたサービスのURLを入力します
    gas_settings

詳細設定は以下のようになります。
advanced_01

  1. URL
    デプロイ時に表示されたサービスのURLを入力します

これまでの設定で"This is a sample."の文字列を読み出した場合、以下のように翻訳されたテキスト受け取ります。

Requestsource"en"target"ja"text"This is a sample"Google Apps ScriptResponseresult"これはサンプルです。"

icon_leftclick

DeepL API

ここではDeepL APIのFreeプランを用いる例を紹介します。

Info

DeepLはDeepL社の提供する翻訳サービスです。

Warning

サービスの利用については別途詳細をご確認の上ご利用ください。

事前準備(DeepL API Free)

DeepLのアカウント登録を行い、翻訳に必要となる認証キーを確認します。アカウントページで下図の黒塗り部分に認証キーが表示されます。
deepl_key

ソフトウェアの設定(DeepL API Free)

  1. 設定ウィンドウ左下の"サンプル"に✔を入れ、サンプルPresetを表示します
  2. ID:2 DeepL API Free (en-ja)を選択します
  3. 複製ボタンをクリックしPresetを複製します
  4. 複製されたPresetを選択します
  5. トランスレータ > モードの詳細設定をクリックします
  6. auth_keyのValueにDeepL APIで使用する認証キーを入力します
    deepl_settings

詳細設定は以下のようになります(DeepLのAPI参照)。
deepl

  1. 認証キー
    auth_keyのValueDeepL APIで使用する認証キーを設定します

Requestについて

Requestの設定は図と同じ順で設定することを推奨します。順番によってはエラー応答が返ってきます。

ChatGPT API

ここではOpenAIのChatGPT API (gpt-3.5-turbo)を用いる例を紹介します。

Info

ChatGPTはOpenAIの提供する人工知能チャットボットです。

Warning

サービスの利用については別途詳細をご確認の上ご利用ください。

事前準備(ChatGPT API)

OpenAIのアカウント登録を行い、翻訳に必要となるAPIキーを取得します。

ソフトウェアの設定(ChatGPT API)

  1. 設定ウィンドウ左下の"サンプル"に✔を入れ、サンプルPresetを表示します
  2. ID:3 ChatGPT API (en-ja)を選択します
  3. 複製ボタンをクリックしPresetを複製します
  4. 複製されたPresetを選択します
  5. トランスレータ > モードの詳細設定をクリックします
  6. HeaderのAuthorizationのValueにAPIキーを入力します。この時、既に入力済みの"Bearer␣(␣は空白)"の後ろに続けて入力してください。
    ChatGPT_settings

詳細設定は以下のようになります(OpenAIのAPI参照)。
deepl

  1. APIキー
    HeaderのAuthorizationのValueにAPIキーを入力します。この時、既に入力済みの"Bearer␣(␣は空白)"の後ろに続けて入力してください。
  2. 翻訳指示
    図中の赤枠内の文言を変えることで翻訳の仕方について細かい指示を行うことができます。例としては常体/敬体の指定、一人称や語尾の指定などが挙げられます。

おわりに


  1. https://秀丸マクロ.net/?page=nobu_tool_hm_google_app_script_lang_trans ↩︎

  2. https://qiita.com/tanabee/items/c79c5c28ba0537112922 ↩︎

  3. 「みんなの自動翻訳」および「TexTra」は、国立研究開発法人情報通信研究機構の登録商標です。 ↩︎

  4. https://秀丸マクロ.net/?page=nobu_tool_hm_google_app_script_lang_trans ↩︎

CapCap

設定画面

HTTP POSTの設定例