ChatGPTに簡単なOCRアプリをPythonで書いてもらった

ChatGPTに簡単なOCRアプリをPythonで書いてもらいました。

TesseractというオープンソースOCRエンジンを利用しています。TesseractはUbuntuuに標準で入ってますがversionが古いので、新たにTesseract 5.3.0 を入れてます。また、デフォルトでは英語だけで日本語を認識しないので、別途、日本語ファイルも設定済みです。あと、OpenCVも事前にインストールしてます。

指示文(プロントプト):

Pythonのtesseractを利用して画像からテキストを抽出するプログラムを書いてください。tesseractの日本語ファイルは導入済みです。読み込んだ画像から抽出するテキストは英語もしくは日本語のどちらかとして、指定できるようにしてください。

回答:

以下はPythonのtesseractを利用して画像からテキストを抽出するプログラムの例です。抽出するテキストの言語を英語または日本語で指定することができます。


import cv2
import pytesseract

def extract_text_from_image(image_path, lang='eng'):
    """
    画像からテキストを抽出する関数

    :param image_path: 画像ファイルのパス
    :param lang: 抽出するテキストの言語 (デフォルトは英語 'eng')
    :return: 抽出されたテキスト
    """
    # 画像の読み込み
    image = cv2.imread(image_path)

    # 画像をグレースケールに変換
    gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

    # 画像をぼかし処理
    blurred = cv2.GaussianBlur(gray, (5, 5), 0)

    # 画像からテキストを抽出
    text = pytesseract.image_to_string(blurred, lang=lang)

    return text

# 画像ファイルのパス
image_path = 'example.png'

# 抽出するテキストの言語を指定してテキストを抽出
text = extract_text_from_image(image_path, lang='eng')
print('抽出されたテキスト (英語):')
print(text)

text = extract_text_from_image(image_path, lang='jpn')
print('抽出されたテキスト (日本語):')
print(text)

    

このプログラムでは、image_to_string関数を使用して画像からテキストを抽出しています。langパラメータを使用して抽出するテキストの言語を指定することができます。デフォルトでは英語 ('eng') が指定されていますが、'jpn'を指定することで日本語のテキストを抽出することができます。

結果:

以下のように成功しました。ただ、サンプルとしてyahooニュースの記事をキャプチャしたものは完璧に読み取ってくれたのですが、2つ目の手書き風画像では誤認識が目立ちます。これはtesseractを実行する際のパラメーター設定で精度を上げられるようです。

サンプル1

サンプル2