Gitリポジトリ内の画像から特定のテキストを抽出する方法【Tesseract OCR】

プログラミング

本記事では、OCR(光学文字認識)を使って、Gitリポジトリ内の全画像から特定のテキストを含む画像ファイルをリストアップする方法を解説します。

企業の社名が変わったとき、ドキュメントやロゴ画像を修正する必要があります。テキストなら一括検索できますが、画像は手作業で探すのは大変です。

そこで、OCRを使って画像内のテキストを抽出し、自動でリストアップすれば、作業の負担を減らせます。

対象環境と前提条件

本記事はMacユーザー向けの手順です。Windowsでは手順が異なります。OCRエンジンとしてTesseract OCRを使用し、Gitリポジトリに保存されたJPG、JPEG、PNG、SVG画像を対象にします。

OCRを使った画像検索の流れ

手順をざっくり以下に示します。

手順
  1. Gitリポジトリのクローン(または既存のリポジトリを使用)
  2. Tesseract OCRのインストール
  3. リポジトリ内の全画像をスキャンし、特定のテキストを含むファイルをリストアップ
  4. 結果をファイルに保存

1. Gitリポジトリの準備

まず、対象となるGitリポジトリを用意します。すでにローカルにあるリポジトリを使う場合はスキップしてください。

# Gitリポジトリをクローン
git clone https://github.com/your-repo.git
cd your-repo

2. Tesseract OCRのインストール

Tesseract OCRをインストールします。管理が楽なHomebrewを使います。以下のコマンドを実行してください。

# Homebrew でインストール
brew install tesseract

完了したら、正しくインストールできているかとバージョンの確認をしておきます。

tesseract -v

日本語にも対応できるよう、日本語のデータもインストールします。

brew install tesseract-lang

3. OCRスキャン処理の作成

リポジトリ内のすべての画像をスキャンし、指定したテキストを含むものをリストアップするスクリプトを作成します。以下のスクリプトファイルを作成し、find_text_in_images.shという名前で保存してください。名前は好きなものでOKです。また、ファイルを保存するディレクトリはGitリポジトリ内ではなくてもOKです。

検索テキストやパスは、実際の値に置き換えてください。

#!/bin/bash

# 画像ディレクトリ (再帰的に検索)
IMAGE_DIR="$HOME/Projects/your-repo" // 実際のパス

# OCR 結果保存ファイル
OUTPUT_FILE="$HOME/Downloads/ocr_result.txt" // 何でもOK

# 検索対象のテキスト (スペース有無どちらでもマッチ)
SEARCH_PATTERN="hogehoge company|hogehogecompany" // 実際のテキスト

# 結果ファイルをリセット
> "$OUTPUT_FILE"

# 画像ファイル(JPG, JPEG, PNG, SVG)を検索
find "$IMAGE_DIR" -type f \( -iname "*.jpg" -o -iname "*.jpeg" -o -iname "*.png" -o -iname "*.svg" \) | while read file; do
  echo "Processing: $file"

  # SVGの場合は直接検索
  if [[ "$file" == *.svg ]]; then
    if grep -Eiq "$SEARCH_PATTERN" "$file"; then
      echo "$file" >> "$OUTPUT_FILE"
    fi
  else
    # その他の画像 (JPG, PNG など) は OCR を実行
    text=$(tesseract "$file" stdout -l eng 2>/dev/null | grep -Eio "$SEARCH_PATTERN")
    if [[ ! -z "$text" ]]; then
      echo "$file" >> "$OUTPUT_FILE"
    fi
  fi
done

echo "OCR処理が完了しました。$OUTPUT_FILEを確認してください。"

保存したスクリプトへ以下のコマンドで実行権限を与えます。

chmod +x find_text_in_images.sh // 実際のスクリプトファイル名

4. 実行・結果の確認

それでは、実際にスクリプトを実行してみましょう。以下のコマンドを実行してください。

./find_text_in_images.sh // 実際のスクリプトファイル名

指定したテキストを含む画像のパスがocr_result.txtに保存されるので、中身を確認してみてください。

cat ~/Downloads/ocr_result.txt

まとめ

どうでしたか?手作業で何時間もかかる作業も、自動化すればたった数秒〜数分で完了します。他にも「こんな場面でもOCRを使えるかも?」と思ったら、ぜひ試してみてください!

また、OCRに限らず「これは自動化できるのでは?」「もっと効率的にできる方法はないかな?」と感じたら、一度調べてみるのがおすすめです。思わぬ時短テクニックが見つかるかもしれません!

タイトルとURLをコピーしました