nikkie-ftnextの日記

イベントレポートや読書メモを発信

macOSでTesseractをPythonから呼び出し、画像内の日本語テキストを検出する

はじめに

アーティファクトを最大2つまで対象とし、それらをアンタップする。1 nikkieです。

OCR光学文字認識)ソフトウェア Tesseract をPythonから触ります。

目次

前回のTesseract!

macOSにインストールし、日本語のOCRができるように設定済みです。

tesseract -l jpn kanji.png tmp

OCR結果がtmp.txtに書き出されます

  • tesseract 5.3.4
  • 日本語のファイル(jpn, jpn_vert)は tessdata_best からダウンロードしたものを使用

pytesseract

TesseractのPythonラッパーが存在します。

  • Python 3.11.8
  • pytesseract 0.3.102
  • Pillow 10.2.0(pip install pytesseractで一緒に入ってきます)

pytesseractで、画像内の日本語テキストを検出

前回記事と同じ kanji.png を使います。

>>> from PIL import Image
>>> import pytesseract
>>> image = Image.open("kanji.png")
>>> result = pytesseract.image_to_string(image, lang="jpn")
>>> print(result)
あな た
飯田 橋 か ら 神楽 坂 エ リア で 、 新 年 会 に ぴっ た り の 居酒屋 を 探し て くだ さい 。 予算 は 17000 円 以下 で 、8 人 で は 入れ る お 店 に し て くだ さい 。

ChatGPT

飯田 橋 や 神楽 坂 エ リア で 新年 会 に お すす め の 居 酒屋 と し て 、

・! が あり ます 。 こち ら は 本 格 的 な イタ リア 料理 を 提供 する お 店 で 、 ピ ビザ や
パス タ が 特徴 で す 。 最大 64 人 まで の 宴会 が 可能 で 、 予算 は 宴会 コー ス で 5000 円 か
ら 利用 で きま す 。 また 、 ! も お すす めで 、 こ ちら は 本 格 イ タリ アン を
提供 する 隠れ 家 的 な 雰囲気 の お 店 で す 。 5 名 以上 で 利用 で きる コー ス が あり 、
7500 円 の 特別 ピッ ツア コー ス が 特に お すす めで す 引 。

読めてますね!

半角スペースが入ってきますが、正規表現で除けます3

pytesseractのソースコードを覗いて

subprocesstesseractコマンドを叩いていました。

出力結果のバリエーションがあることを知りました。

  • テキスト
    • pytesseract.image_to_string()
    • tesseract kanji.png tmp -l jpn txt(最後に拡張子を指定できる。この指定はモードのようにも働く)
  • 文字+座標
    • pytesseract.image_to_boxes()
    • tesseract kanji.png tmp -l jpn -c 'tessedit_create_boxfile=1 batch.nochop makebox'
  • 文字のまとまり+座標
    • pytesseract.image_to_data()
    • tesseract kanji.png tmp -l jpn tsv

終わりに

Tesseractの環境構築ができていれば、pytesseractでPythonから操作できます。
実装を覗いて、Tesseractで座標情報も出力できることを知りました。


  1. 《求道者テゼレット》
  2. リポジトリにはPyPIより新しいバージョンがありました。https://github.com/madmaze/pytesseract/releases/tag/v0.3.13
  3. オメガグッショブ!