Pythonで動画から文字を自動認識|OCRを活用した効率的なテキスト抽出手順

Pythonで動画から文字を認識するなんて、なんだか難しそうだなぁ…。でも、動画から重要なテキスト情報を抽出できたらいいな…。どうしたらいいんでしょうか。
猫男
猫男
catman
catman
心配いらないさ。Pythonを使って、動画から文字を認識する方法があるんだ。OCR(Optical Character Recognition)技術を活用すれば、動画内のテキストを自動認識して抽出することができるよう。

 

Pythonで動画から文字を認識する方法

PythonとOCRライブラリを使えば、動画から文字を自動認識することができます。

文字を認識するためには、最初に動画を画像にフレームごとに分解して、それからOCRを用いて文字を抽出します。この方法を使えば、動画内の重要な情報をテキストとして効率的に取得することが可能です。

 

動画を画像に分解する

動画から文字を認識する最初のステップは、動画を個別のフレームに分解することです。

動画ファイルを画像ファイルに分解するためには、OpenCVというPythonライブラリを使用します。

import cv2
import os

def video_to_frames(video_path, output_folder):
    os.makedirs(output_folder, exist_ok=True)
    video = cv2.VideoCapture(video_path)
    success, frame = video.read()
    count = 0

    while success:
        cv2.imwrite(os.path.join(output_folder, f"frame_{count}.jpg"), frame)
        success, frame = video.read()
        count += 1

    video.release()

このコードでは、cv2.VideoCaptureを使い、動画を読み込んでフレームごとに画像として保存します。

OpenCVのVideoCaptureは、動画を読み込みフレーム単位で処理するためのクラスです。

cv2.imwriteを使ってフレームをJPEG画像として保存します。

 

画像から文字を認識する

次に、画像に分解した動画フレームから文字を認識します。

ここでは、Tesseract OCRを使用します。Tesseractは、強力な文字認識エンジンであり、PythonのPytesseractというライブラリを介して使用できます。

 

PythonコードでOCRを実施する

import pytesseract
from PIL import Image

def extract_text_from_image(image_path):
    image = Image.open(image_path)
    text = pytesseract.image_to_string(image)
    return text

このコードは、pytesseract.image_to_stringメソッドを使い、画像から文字を抽出します。

Pytesseractのimage_to_stringメソッドは文字を抽出し、テキストとして返します。

 

動画全体から文字を抽出する

動画全体から文字を認識するためには、先ほどの処理を各フレームに対して行います。

 

動画からすべての文字を抽出するPythonコード

def extract_text_from_video(video_path, output_folder):
    video_to_frames(video_path, output_folder)
    texts = []
    
    for frame_file in os.listdir(output_folder):
        frame_path = os.path.join(output_folder, frame_file)
        text = extract_text_from_image(frame_path)
        texts.append(text)
        
    return texts

このコードは、動画を画像に分解し、各画像から抽出された文字列をリストとして保存します。

 

コードの解説

動画ファイルを画像に変換し、各画像から文字を抽出してその合計をリストに記録する流れです。この方法で、動画内のすべての文字情報を集約できます。

 

関連ライブラリのインストール

OCRを実行するためには、必要なライブラリをインストールする必要があります。

pip install opencv-python pillow pytesseract

また、Tesseractのインストールが別途必要です。公式サイトからダウンロードしてインストールを行ってください。

 

ベストプラクティス

フレームの効率的な選択

全フレームから文字を認識するのは時間がかかるため、特定のフレーム間隔でOCRを実施すると効率的です。

if count % 10 == 0:
    cv2.imwrite(os.path.join(output_folder, f"frame_{count}.jpg"), frame)

 

精度を高めるために

画像の解像度や画質を改善することで文字認識の精度を高めることができます。画像をグレースケールに変換するなどの前処理を行うとより効果的です。

gray_image = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)

 

動画から文字認識って、案外やりやすいんですね!これなら、仕事の効率も上がりそうです。
猫男
猫男
catman
catman
その通りさ。PythonとOCRを活用すれば、動画から重要なテキスト情報を効率的に抽出することができる。まずは試してみるといいよう。

 

まとめ

Pythonを使えば、動画から文字を認識することが可能です。

このプロセスを以下に簡単にまとめます。

  • 動画を画像にフレームごとに分解する
  • Tesseract OCRを用いて各フレームから文字を抽出する
  • 抽出した文字を集約して分析に活用する

動画からの文字認識はビジネスやデータ分析に幅広く応用できます。PythonとOCR技術を使って、効率的な情報抽出を実現しましょう。

EARTHPG 自動化研究所

「その作業、仕組みにできます。」

Google Apps Script、Python、スプレッドシート自動化、WordPress開発、 API連携、AI活用まで対応。 小さな自動化から業務全体の設計まで、研究所が支援します。