【Illustrator】スクリプトで自動化!大量のイラレファイルからテキストを抜き出し

【Illustrator】スクリプトで自動化!大量のイラレファイルからテキストを抜き出し

Illustrator イラレファイルからテキストを自動抜き出し
大量のイラレファイル(.ai)からテキストデータを抜き出したいということがあったので、備忘録を兼ねた記事です。

※執筆当時のバージョンはIllustrator(27.5)です。

CONTENTS

スクリプトで自動化してみた

ひとつひとつ手作業で文字をコピーしていたら腱鞘炎&日が暮れそうだったので、自動で処理ができるようにスクリプトを書いてみました。

この方法ではアウトライン化した文字は抜き出せません

まずIllustratorやPhotoshopですが、自動処理機能があります。
(他のAdobe製品でも使えるかもしれないですが未確認)

今回はイラレでjsxファイルを使った自動処理の方法をやってみました。

処理の流れについて

jsxというとあまり馴染みがないですが、中身はJavaScriptです。

コードをメモ帳などで書き保存した後、ファイル形式を.jsxにすればOKなので
特別なエディタが無くても初心者の方でもコピーで使えます。

処理内容はこんな感じ(処理したいaiファイルが同じフォルダ内にあると仮定
  • 処理したいフォルダを選択する
  • aiファイルを順番に処理、テキスト情報を抜き出す
  • テキスト情報をテキストファイル(.txt)にaiファイルと同じ名前を付けて同フォルダ内に保存
  • aiファイルを閉じる

事前準備

実際は処理したいファイルが別にありましたがそちらのスクショは使えないので、適当なファイルを作成して説明します。
サンプルファイル
このようにテキストを2つ挿入し、スクリプトでの抜き出しはできませんが比較用にアウトライン化したテキストも入れてみました。

ファイル名は「サンプルファイル①」とし、全く同じ内容のファイル「サンプルファイル②」も用意しました。
この2つのファイルはデスクトップ上の「処理したいファイル」フォルダに入れてあります

スクリプトコード

書いたコードはこんな感じです。

// フォルダのパスを指定
var folder = Folder.selectDialog("処理を実行するフォルダを選択してください");

if(folder) {
  var files = folder.getFiles("*.ai");

  // ①画像リンクが見つからない場合はスキップ
  app.userInteractionLevel = UserInteractionLevel.DONTDISPLAYALERTS;

  for (var i = 0; i < files.length; i++) {
    var file = files[i];
    
    var doc = app.open(file);
    var extractedText = []; //テキスト情報を格納
    
    // ②テキストフレームを検索してテキスト情報を抽出する
    for (var j = 0; j < doc.textFrames.length; j++) {
      extractedText.push(doc.textFrames[j].contents);
    }
    
    // ③AIファイル名取得
    var filePath = doc.fullName;
    var fileName = filePath.name.split(".")[0];
    
    // ④テキストファイルとして保存
    var savePath = filePath.path + "/" + fileName + ".txt";
    var saveFile = new File(savePath);
    saveFile.open("w");

    // ⑤配列を逆並びにして改行を追加
    var extractedText = extractedText.reverse();
    var result = extractedText.join("\n");

    saveFile.write(result); //テキストに書き出し
    saveFile.close();
    
    doc.close(SaveOptions.DONOTSAVECHANGES);
  }
  // ⑥画像リンク確認スキップを元に戻す
  app.userInteractionLevel = UserInteractionLevel.DISPLAYALERTS;
}

各コードの簡単な説明

画像ファイルなどが埋め込まれていないaiファイルを開く場合警告ダイアログが表示されますが、これが表示されるといちいち処理が止まってしまうので、この表示を出さないような設定に変更しています。
テキスト情報を抜き出しています。テキストはファイル内の上にあるものから順番に抜き出されます。
テキストファイルのリネーム用にaiファイルのファイル名を抜き出し。
テキストファイルを生成します。
抜き出したテキストをそのまま書き出しするとテキスト上では順番が逆になってしまうので、配列の順番を逆にしています。
①の設定を元に戻します。

書いたスクリプトをイラレで動かす!

作成したjsxは分かりやすい名前を付け、イラレのスクリプトフォルダに格納します。
スクリプト格納場所
私の環境ではスクリプトフォルダは以下の場所にありました。
C:\Program Files\Adobe\Adobe Illustrator 2023\Presets\ja_JP\スクリプト

ファイル名がイラレ内での表示名となります

フォルダにjsxファイルを格納しイラレを起動している場合は再起動すると、保存したスクリプトを使えるようになります。
スクリプトの選択画面
フォルダを選択すると
フォルダ選択画面

こんな感じでテキストファイルが生成されます。

内容はこんな感じ。
やはりアウトライン化したものは無理ですが、それ以外はバッチリテキスト抜き出しが出来ていますね!
抜き出したテキストファイル
アウトライン化したものも抜き出したい!ということも多々あると思うので
時間があれば次回挑戦してみたいと思います。
CONTENTS