LoginSignup
1
2

pytesseractを使って画像文字認識(英語および日本語[縦書き・横書き])を試してみた

Last updated at Posted at 2024-01-21

私の環境

iMacOS vetura 13.2
Python 3.10.4
Homebrew 4.2.4
pip 23.3.2

そもそも、画像の文字認識ってできるの?から始まりました。

蔵書管理のprogramを作っているけど、その中に内容の概要があれば後から分かり易いけど、「裏表紙のあらすじ」を文字化できないかな?
そこでchatGPTに聞いてみました。
スクリーンショット 2024-01-21 10.43.54.png
出来ると言うことから、チャレンジしてみました。
でも、結論から言うと、目的である「裏表紙のあらすじ」を文字化して利用するには、もう少し研究しないとダメかもしれないと言うことです。
でも、新しい?(自分の中では)技術を知ったことは大変な喜びです。色々と使えそうです。

最初は失敗しました。

私はここで躓きました。
それは原因は"homebrew"を通さずに、"pytesseract"をインストールしたため、肝心な日本語(縦書きを含む)を読み込む段階でErrorとなりました。
また、次には、縦書きでは読み込めないことでした。
でも、以下の通りで解決しました。

参考にしたサイト

まず、最初に行うこと

HomeBrewに"tesseract"をインストール

# HomeBrewに"tesseract"をインストール
xxxxx@xxxxxnoiMac ~ % brew install tesseract

こんな感じで始まりました。1分ぐらい動いてました。そして”他の言語が必要な場合はbrew install tesseract-lang」”を実行しろと表示が出て終わりました。

xxxxx@xxxxxnoiMac ~ % brew install tesseract
Running `brew update --auto-update`...
##################################################################

省略

==> Caveats
==> tesseract
This formula contains only the "eng", "osd", and "snum" language data files.
If you need any other supported languages, run `brew install tesseract-lang`.
この式には、「eng」、「osd」、およびsnum言語データ ファイルのみが含まれています
サポートされている他の言語が必要な場合は、「brew install tesseract-langを実行してください。)

なので、指示通り「brew install tesseract-lang」をインストールしました。

# 日本語(jpn)を使用するため、上記指示に従い「brew install tesseract-lang」をインストール
xxxxx@xxxxxnoiMac ~ % brew install tesseract-lang

簡単にインストールは終了しました。pipだとインストールが成功すると
Successfully installed xxxxxxとか表示されるけど
、なにも表示されませんでした。
変わりに”この動作を無効にします。”と表示がされましたが、警告でもエラーでもないので放っておきました。特に問題はなかったです。
ちなみに chatGPTの回答は
スクリーンショット 2024-01-21 10.55.58.png

xxxxx@xxxxxnoiMac ~ % brew install tesseract-lang
==> Downloading https://ghcr.io/v2/homebrew/core/tesseract-lang/manifests/4.1.0-1
###########################################################100.0%

省略

==> Running `brew cleanup tesseract-lang`...
Disable this behaviour by setting HOMEBREW_NO_INSTALL_CLEANUP.
Hide these hints with HOMEBREW_NO_ENV_HINTS (see `man brew`).

HOMEBREW_NO_INSTALL_CLEANUP を設定してこの動作を無効にします
これらのヒントは HOMEBREW_NO_ENV_HINTS で非表示にします (man brewを参照)

次に、pipに"pytesseract"をインストールします。これは特に問題なことはなく通常通り終了しました。

# "pytesseract"をインストール
xxxxx@xxxxxnoiMac ~ % python3 -m pip install pytesseract
xxxxx@xxxxxnoiMac ~ % python3 -m pip install pytesseract
pytesseract
Collecting 

省略

Installing collected packages: pytesseract
Successfully installed pytesseract-0.3.10
(pytesseract-0.3.10が正常にインストールされました)

これで準備は整いました。

次にサンプルの画像を準備します。これらの”スクリーンショット”を、current directory(下のprogramの置いてあるディレクトリ)に保存します。(jpgでもpngでも大丈夫ででした。PDFはダメでした>)
こんな感じです。
スクリーンショット 2024-01-21 10.22.27.png

[横書きの例]
横書き.png
[縦書きの例]
縦書き.png

コードは以下の通り簡単です。

# PythonとOCR(光学文字認識)の組み合わせによる画像内のテキストを自動的に読み取る

# 日本語のOCDテストprogram
import pytesseract
from PIL import Image
import os

# current_directryを調べる
cur_path = os.getcwd()

#OCRするPhotoを指定
photo = '/横書き.png'
str_img = Image.open(cur_path + photo)

# 日本語(縦書きを含む)を読み込む
str = pytesseract.image_to_string(str_img,lang="jpn+jpn_vert")
print(str)

photo = "/ "のところにphotoの名前を入力してください。
ターミナル上に表示されます。

上手く行かない画像の例です。

[画像例01]
test_png.png

これは出発点が一文字が2列分になっていて誤読されます。
<ターミナルへの表示>

しPD
 が本部長を務めるロス北郊のサンフェ
ルナンドの市警察に誘われ無給の嘱託
刑事として勤務するようになっていた
一方で取り直した免許により私立探偵
として個人的な仕事を受けていたある
刀歳の大富楽ホイットニーヴァン
スから呼び出され人捜しを依頼される

レーい先短いことを悟った富革には学生

の頃知り合い妊娠させながらも

り計和培全丈おスキロスS稀べく会お?
その子どもが生きていれば捜してほしい
と頼まれたボッシュは調査を引き受ける
同僚刑事と連続婦女暴行事件捜査
を進めるなか同一犯によると思しき暴
行末遂事件が起こり事態が急展開する

[画像例02]
病院坂の首縊りの家.png

原因はわかりませんが、こんな感じで表示されます。
<ターミナルへの表示>

=ここ 消僚の女が首を給った
忌まわしき旧法眼邸 明治から
戦手まで隆盛を極め"病院坂"
という地名にまでなった大病院
の屋敷跡であった……。本條写
真館の息子直吉はある晩そこ
で奇妙な結婚記念写真を依頼さ
れた 住む人もない廃屋での撮
影は不吉な出来事を暗示して
いるようであった 数日後
び撮影で屋敷を訪れた直吉は
そこに鮮血を滴らせ風鈴の如く
ぶら下がった男の生首を発見す
るが…!?

これなんかは、誤字も最初の方にありますが、まずまず表示されています。
[画像例03]
ターミナル.png
<ターミナルへの表示>

# PythonとOCR (光学文字認識) の組み合わせによる画像内のテキストを

# 日本語の0OCDテストprogram
1mport pytesseract
from PIL import Image
import os

# Current_directryを調べる
cur_path = os.getcwd( )
#0CRするPhotoを指定
photo = '/横書き.png'
str_img = 1mage.open(cur_path + photo)

# 日本語 (縦書きを含む) を読み込む
動的に読み取る
str = pytesseract.image_to_string(str_img, Lang="]Dpn+]Dn_Vert")
print(str)
'''
1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2