画像ファイルの文字を認識するプログラムをChatGPTに教えてもらったら、1時間で実装できた
今回は、pythonで、画像ファイルの文字認識するプログラムをChatGPTに教えてもらおうとおもいます!
1.まずは画像ファイルから文字認識するコードを教えてもらう
まずは、ChatGPTに画像ファイルから文字認識するコードを教えてもらおうと思います。そこから微調整してコードを完成させていく予定です。
プロンプト
pythonで写真ファイルを読み込み、文字認識をして、テキスト化するコードを教えてください
ChatGPTからの回答
pip install pytesseract pillow
import pytesseract
from PIL import Image
# 画像ファイルを開く
image_path = 'sample_image.jpg' # 'sample_image.jpg'は適切な画像ファイルに置き換えてください
image = Image.open(image_path)
# OCR(光学文字認識)で画像からテキストを抽出
text = pytesseract.image_to_string(image, lang='eng') # 'eng'は英語の言語設定です。他の言語に変更可能
# 抽出したテキストを表示
print("抽出されたテキスト:")
print(text)
2.画像ファイルをアップロードする画面を作る
Djangoで画像ファイルをアップロードするフォーム画面一式(views.py、html、urls.py)も、ChatGPTに作成してもらいますが、ここのChatGPTとのストロークは割愛します。
3.動作確認する
お・・!
もうできたの??
作成した画像アップロード画面にて、画像ファイルを読み込むとエラーとなってしまいました。。さすがに多少はエラーが発生しますよね。。
エラーログもそのままChatGPTに投げてしまいます!
エラーログをそのままコピペで解決してくれるので、エラー解消する作業の時短になります!
プロンプト
File "/opt/bitnami/python/lib/python3.11/site-packages/django/forms/fields.py", line 708, in to_python from PIL import Image ModuleNotFoundError: No module named 'PIL'
ChatGPTからの回答
pip install Pillow
4.文字認識した内容をログに出すように修正する
上記の不足していたPillowをインストール後、文字認識した内容をどこにも表示していなかったので、ログに出力するようにChatGPTにプログラム修正をしてもらいます。
以下プロンプトで提示しているコードは、上記でChatGPTから提示されたコードで、このコードをベースに修正してもらいたいのでコードも提示しました。
プロンプト
ファイルを読み込んだ後に、pytesseractで文字解析をしたいです。
文字解析した文字列は、loggerで出力する
def image_upload_view(request):
if request.method == 'POST':
form = ImageUploadForm(request.POST, request.FILES)
if form.is_valid():
# form.cleaned_data['image'] でアップロードされた画像にアクセス可能
return HttpResponseRedirect('/success/')
else:
form = ImageUploadForm()
return render(request, 'image_upload.html', {'form': form})
ChatGPTからの回答
import pytesseract
from PIL import Image
import logging
logger = logging.getLogger(__name__)
def image_upload_view(request):
if request.method == 'POST':
form = ImageUploadForm(request.POST, request.FILES)
if form.is_valid():
# 画像ファイルを取得
image_file = request.FILES['image']
# Pillowを使って画像を開く
image = Image.open(image_file)
# 文字認識
try:
text = pytesseract.image_to_string(image, lang='jpn')
# ロギング
logger.info("文字解析結果: %s", text)
# ここで他の処理を行う
return HttpResponseRedirect('/success/') # 成功時にリダイレクトするURL
except Exception as e:
# 例外処理
logger.error("文字解析エラー: %s", str(e))
return HttpResponseRedirect('/error/') # エラー時にリダイレクトするURL
else:
form = ImageUploadForm()
return render(request, 'image_upload.html', {'form': form})
5.動作確認その2
上記ログを出力するロジックをプログラムに反映したので、再度動作確認です!
行けるか・・??
・・・
エラーでした、、
またエラーとなりましたので、再度ChatGPTに聞いてみます。
プロンプト(Tesseractが見つからないエラー)
File "/opt/bitnami/python/lib/python3.11/site-packages/pytesseract/pytesseract.py", line 260, in run_tesseract raise TesseractNotFoundError() pytesseract.pytesseract.TesseractNotFoundError: tesseract is not installed or it's not in your PATH. See README file for more information.
ChatGPTからの回答
brew install tesseract
sudo apt-get install tesseract-ocr
pip install pytesseract
# settings.py
TESSERACT_CMD = '/path/to/tesseract'
import pytesseract
def image_upload_view(request):
pytesseract.pytesseract.tesseract_cmd = '/path/to/tesseract'
# 以下略
プロンプト(TESSERACT_CMDのパスの設定の仕方)
TESSERACT_CMD = '/path/to/tesseract' パスは何を設定するのですか
ChatGPTからの回答
C:\Program Files\Tesseract-OCR\tesseract.exe
TESSERACT_CMD = 'C:/Program Files/Tesseract-OCR/tesseract.exe'
/usr/local/bin/tesseract
TESSERACT_CMD = '/usr/local/bin/tesseract'
/usr/bin/tesseract
TESSERACT_CMD = '/usr/bin/tesseract'
6.動作確認その3
上記ログを出力するロジックをプログラムに反映したので、再度動作確認です!
今度こそ行けるか・・??
・・・
エラー・・!
またエラーとなりましたので、めげずにChatGPTに聞いてみます。
プロンプト
File "/opt/bitnami/python/lib/python3.11/site-packages/pytesseract/pytesseract.py", line 264, in run_tesseract raise TesseractError(proc.returncode, get_errors(error_string)) pytesseract.pytesseract.TesseractError: (1, 'Error opening data file /usr/share/tesseract-ocr/4.00/tessdata/jpn.traineddata Please make sure the TESSDATA_PREFIX environment variable is set to your "tessdata" directory. Failed loading language \'jpn\' Tesseract couldn\'t load any languages! Could not initialize tesseract.')
ChatGPTからの回答
sudo apt-get install tesseract-ocr-jpn
export TESSDATA_PREFIX=/usr/share/tesseract-ocr/
source ~/.bashrc
# settings.py
TESSDATA_PREFIX = '/usr/share/tesseract-ocr/'
7.動作確認その4
上記ログを出力するロジックをプログラムに反映したので、再度動作確認です!
今度こそ行けるか・・??
・・・
行けたー!!!
無事画像ファイルから文字を読み込めました。嬉しいです!
実際に読み込んだ画像ファイルと、読み込み結果は以下の通りとなります。
8.検証その1
以前、noteの記事用に作成したスクショを取り込んでみます。
読み込んだ画像ファイル
読み込み結果
正確に読み取れている感じがしますね!
8.検証その2
次にYahooニュースの一部をスクショしたもので検証していきます!
読み込んだ画像ファイル
読み込み結果
吹き出しアイコンや、Newアイコンなどが含まれていると、その箇所は文字化けした形で取り込まれてしまいますね、、
おわりに
最後まで読んで頂き、ありがとうございました!
ChatGPTを使用しながらコーディングをすると、やはりサクサク出来て気持ちがいいですね!1時間程度で完成することができました。
写真から文字認識させて、その読み込んだ文字列を加工したりすることで、色々なことに使えそうですね!
今回作ったプログラムは、画像から文字を取り込むまでのステップが、写真を撮り、サイトに写真をアップロードしないと確認できず、効率が良くないので、アプリで写真を撮ったら即文字認識みたいな仕組みの方が効率が良さそうですね。
以前にiosアプリで文字認識させるプログラムを作ったことがありますが、内容を忘れてしまったので、ios版もまた作ってみたいと思いました!
この記事が気に入ったらサポートをしてみませんか?