21
21

More than 1 year has passed since last update.

画像から文字を瞬時に読み取る!Tesseractとpytesseractの驚異の力【Python】

Posted at

Tesseractとpytesseractで画像から文字を読み取る

画像から文字を読み取るには、OCR(Optical Character Recognition)技術を使用します。

PythonでOCRを実装するためには、TesseractというオープンソースのOCRエンジンと、それをPythonで使えるようにしたライブラリであるpytesseractを使用します。

事前準備

Tesseractのインストール

以下からTesseractをインストール。

■ 環境変数にパスを入れる。

  • Windowsの場合はデフォルト以下
C:\Program Files\Tesseract-OCR

image1.png

■ 日本語の学習データ(jpn.traineddata)を配置する

Tesseractの日本語の学習データ(jpn.traineddata)は以下。

ダウンロード後、jpn.traineddata ファイルを Tesseract-OCR\tessdata フォルダに配置する。

  • Windowsの場合はデフォルト以下
C:\Program Files\Tesseract-OCR\tessdata

image2.png

pytesseractとPillowをインストール

以下のコマンドを実行。

pipコマンド
pip install pytesseract Pillow

Pythonソースコード

以下のソースコードファイルを作成。

app.py
import sys
import pytesseract
from PIL import Image

def image_to_text(image_path):
    # 画像を読み込む
    img = Image.open(image_path)

    # TesseractでOCRを実行
    text = pytesseract.image_to_string(img, lang='jpn')

    return text

if __name__ == "__main__":
    if len(sys.argv) > 1:
        image_path = sys.argv[1]  # コマンドライン引数から画像ファイルのパスを取得
        text = image_to_text(image_path)
        print(text)
    else:
        print("Usage: python app.py <path_to_image>")

フォルダ構成

.
├─app.py
├─image.png
└─readme.md

使い方

以下のようにコマンドを実行する。

  • コマンド
コマンド
python app.py 【画像パス】
  • 実行例

sample1.png
sample1.png

コマンド
python app.py ./sample1.png
  • 出力
出力
テ ス ト テ キ ス ト

hogehogehogehogehogehogehogehoge

③②①①②③④⑤⑥⑥⑤④⑦⑧⑨⑨⑧⑦000

し ん ぶ ん し シ ン ブ ン シ 新 聞 紙 !!

馬 馬 馬 馬 馬 馬 馬 馬

騙 騙 監 騙 監 監 馬 監 騙 騙 騙 騙 騙 監 騙 監 監 馬 監 騙 馬 騙 騙 騙 監 騙 騙 監 騙 監 騙 馬 騙 騙 属 監  愚
騙 騙 騙 騙 騙
  • 漢字の読み取り間違いが多々ある
  • 数字は読み取ってはいるが、丸数字になってしまっている

色々試してみた

  • 入力
    sample2.png

  • 出力

コマンド
画 像 認 識 と は 、 画 像 に 写 っ う て い る も の を 認 識 す る 技 術 で す 。 取 り
込 ま れ た 写 真 デ ー タ の 特 徴 を さ ま ざ ま な 学 習 機 で 分 析 し て 、 新 た
な 画 像 を 識 別 す る こ と が で き ま す 。 一 般 的 に コ ン ピ ュ ー タ は 画 像
を ビ ク セ ル の 集 合 体 と し て し か 認 識 で き ま せ ん が 、 実 際 に は 人
物 、 動 物 、 文 字 、 イ ラ ス ト と い っ た 情 報 や 意 味 が 含 ま れ て い ま

す 。 apacms
  • 入力
    sample3.png

  • 出力

コマンド
Ryo ihi
@oome

0 ⑨ ミ

⑦②⑧ cweucs

団 0 ⑥ B
B ラ ォ ロ ー ロ ロ ー
ア プ リ M 発 が W 睦エ ン シ ー ア , コ ー テ ィ

ン グ 、 更 痒 輝 、 エ ラ ー 触 ③ 等 に っ い て H 縛 し て
い ま す . 切 字 音 で ち ② う か る よ う ま CWB し ま

す . ⑨⑧⑨ 團 口 は 來 人 の 愚 見 で あ り 、 所 医 約 画 の
分 R 和 常 で は あ り ま せ ん 。
  • 入力
    sample4.png

  • 出力

コマンド
フ ォ ロ ー 中 の タ グ ラ ォ ロ ー ぁ
crrs qmcr uay emoL naa Aes

mMmi ooee puce ja
  • 入力
    sample5.png

  • 出力

コマンド


  • 入力
    sample6.png

  • 出力

コマンド
デ ィ ー プ ラ ー ニ ン グ ( 深 履 学 習 ) と は 、 人 間 が 自 然 に 行 う タ ス ク を コ
ン ピ ュ ー タ に 学 習 さ せ る 機 棒 学 習 の 手 法 の ひ と つ で す 。 人 工 知 背
(AD の 急 速 な 発 展 を 支 え る 技 術 で あ り 、 そ の 進 歩 に よ り 様 々 な 分 野
へ の 実 用 化 が 進 ん で い ま す 。 近 年 開 発 の 進 ん で い る 自 動 運 転 車 に お
い て も カ ギ と な っ て い る の は 、 デ ィ ー プ ラ ー ニ ン グ で す 。 停 止 梶 譚
を 認 識 し た り 、 電 柱 と 人 間 を 区 別 し た り す る の も 、 デ ィ ー プ ラ ー ニ
ン グ が 可 能 に し て い る 技 術 と 言 え ま す 。 ま た 、 電 話 、 タ ブ レ ッ ト 、
テ レ ビ 、 ハ ン ズ フ リ ー ス ピ ー カ ー な ど の 音 声 認 識 に も 重 要 な 役 副 を
果 た し て い ま す 』 近 年 デ ィ ー プ ラ ー ニ ン グ が 注 目 を 集 め て い る の に
は 理 由 が あ り ま す 』。 そ れ は ほ デ ィ ー プ ラ ー ニ ン グ が 、 従 来 の 技 術 で は
不 可 能 だ っ た レ ベ ル の パ フ ォ ー マ ン ス を 達 成 で き る よ う に な っ て き
て い る か ら で す 。 り

ト

背景が白、文字が黒、きっちり並んでいる文字列だったら読み取れそう。

GitHub

今回の記事で紹介したソースコードをGitHubで公開しています。

21
21
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
21
21