🐈

ChatGPTのCode Interpreterモデルを使って日本語を含む画像からOCRでテキストを抽出する

2023/07/10に公開

この記事の概要

  • ChatGPT Code Interpreterモデルを使って、文字列の画像をOCRしてテキストを抽出できる。
  • OCRにはPythonのpytesseractが使われている。
  • 標準では日本語はサポートされていないが、トレーニング・データを画像と一緒にアップロードすることで対応できるようになる。

とりあえず結果を見たい方

こちらからどうぞ。
https://chat.openai.com/share/cd7bf2e0-ddd9-41f4-aab8-55cace82d5a5

手順

Code Interpreterモデルは標準では日本語OCRに未対応

Code InterpreterモデルでOCRができるらしいと聞いて早速コンビニの買い物のレシートを使ってチャレンジしてみたのですが、ChatGPTはこんな返事が。

申し訳ありませんが、この環境では日本語のOCRがサポートされていないようです。他の言語(英語など)を対象にテキスト抽出を試みることは可能ですが、画像によっては結果が不完全または不正確になる可能性があります。それでも英語でのOCRを試みますか?それとも他の方法でお手伝いできることがあればお知らせください。

参考: ChatGPTがCode Interpreterモデルをリリース
https://twitter.com/OpenAI/status/1677015057316872192?ref_src=twsrc^tfw|twcamp^tweetembed|twterm^1677015057316872192|twgr^aaf1bf5ae20d138a4054cf5cf105a3e414b19b9d|twcon^s1_c10&ref_url=https%3A%2F%2Fembed.zenn.studio%2Ftweetzenn-embedded__f78f45de77e2b

OCRにはPythonのpytesseractが使われている

処理内容を詳しく見てみると、OCRにはpytessseractが使われていました。

そこで「pytesseract ocr 日本語」を検索してみるとこんな記事が
https://opty-life.com/study/program/python/python-lecture-34/#toc4

ChatGPTに送信するファイルに日本語トレーニング・データを添付する

ちょっと強引ですが、送信する画像に日本語トレーニング・データを添付してみます。

成功!

問題なく日本語の画像をOCRできました。

'ocr_test' フォルダの中には、'jpn.traineddata'という日本語のトレーニングデータと、'πé╣πé»πâ¬πâ╝πâ│πé╖πâºπââπâê 2023-07-10 13.29.46.png'という名前の画像ファイルがあります。これらを使用して、OCRを実施します。

pytesseract の設定に必要な 'jpn.traineddata' ファイルを tessdata ディレクトリに移動します。次に、画像からテキストを抽出します。

zipファイルの作成時に手違いがあり tessdata ディレクトリを作るのを忘れてしまいましたが、なんやかんや解決してくれました。余談ですが、GhatGPT-4のCode Interepreterモデルは、従来よりも能力があがったのか、問題が発生しても自分でねばるようになった気がします。

そし て 17 年 後 、 私 は 本 当 に 大 学 に 通う こと に な っ た 。 と ころ が 、 ス タン フォ ー ド 並み
に 学費 が 高い 大 学 に 入っ て し まっ た ば っ か り に 、 労 働 者 階級 の 両親 は 蓄え の すべ て を
学費 に 注ぎ 込む こと に な っ て し まい まし た 。 そ し て 半年 後 、 僕 は そこ まで 犠牲 を 払っ
て 大 学 に 通う 価値 が 見 い だ せ な く な っ て し まっ た の で す 。 当 時 は 人 生 で 何 を し た らい
い の か 分 か ら な か っ た し 、 大 学 に 通っ て も や り た いこ と が 見 つか る と は と て も 思え な
か っ た 。 私 は 、 両 親 が 一 生か け て 蓄え た お 金 を ひたすら 浪費 し て いる だ け で し た 。 私
は 退学 を 決め まし た 。 何と か な る と 思っ た の で す 。 多 少 は 迷い まし た が 、 今 振り 返る
と 、 自 分 が 人 生 で 下 し た も っ と も 正しい 判断 だ っ た と 思い ます 。 授 学 を 決め た こと
で 、 興 味 も な い 授 業 を 受け る 必要 が な く な っ た 。 そ し て 、 お も し る ろ る そう な 授業 に 潜り
込ん だ の で す 。

と は いえ 、 い い 話 ば か り で は な か っ た で す 。 私 は 寮 の 部 屋 も な く 、 友 達 の 部 屋 の 床 の
上 で 寝起き し まし た 。 食 べ 物 を 買う た め に 、 コ カ ・ コ ー ラ の 瓶 を 店 に 返し 、5 セ ント
を か き 集 め た り も し まし た 。 温 か い 食 べ 物 に あり つこ うと 、 毎 週 日 曜日 は 7 マイ ル 先
に ある クリ シュ ナ 寺 院 に 徒歩 で 通 っ た も の で す 。

微調整

不要なスペースを削除してOCR完了です。

そして17年後、私は本当に大学に通うことになった。ところが、スタンフォード並み
に学費が高い大学に入ってしまったばっかりに、労働者階級の両親は蓄えのすべてを
学費に注ぎ込むことになってしまいました。そして半年後、僕はそこまで犠牲を払っ
て大学に通う価値が見いだせなくなってしまったのです。当時は人生で何をしたらい
いのか分からなかったし、大学に通ってもやりたいことが見つかるとはとても思えな
かった。私は、両親が一生かけて蓄えたお金をひたすら浪費しているだけでした。私
は退学を決めました。何とかなると思ったのです。多少は迷いましたが、今振り返る
と、自分が人生で下したもっとも正しい判断だったと思います。授学を決めたこと
で、興味もない授業を受ける必要がなくなった。そして、おもしるろるそうな授業に潜り
込んだのです。

とはいえ、いい話ばかりではなかったです。私は寮の部屋もなく、友達の部屋の床の
上で寝起きしました。食べ物を買うために、コカ・コーラの瓶を店に返し、5セント
をかき集めたりもしました。温かい食べ物にありつこうと、毎週日曜日は7マイル先
にあるクリシュナ寺院に徒歩で通ったものです。

結論

Code Interepreterモデルはアップロードしたファイル(ZIPを含む)を読み込んで、Pythonのコードで処理できる。そして、アップロードしたファイルをチャットの会話コンテキストのなかで認識できる。

Discussion