見出し画像

243 新人エンジニア向け: Tesseract OCReasyocrで画像から文字を抽出する方法(MENTAでご教授いただいたこと)#AIエンジニア見習いの学習日記

この記事では、私がMENTAで先生から学んだTesseract OCRを使った文字抽出手法を解説します
Pythonを用いた実装例や、コマンドプロンプト/VSCODEを使った実行方法を簡単に紹介します。

AIエンジニアを目指すお仲間のお役に立てれば幸いです。

★今回のテーマ★
Tesseract OCRの「easyocr」というライブラリで、png形式の画像から日本語の文字を抽出する。

★結果共有★
input画像 ※画像PNG形式でローカルPCに保存しました。こちらの画像を文字抽出していきます♪

output ※メモに文字抽出する。#はnote解説のため後で綴りました。



Tesseract OCRとは?

Tesseractは、無料使えるオープンソースのOCR(Optical Character Recognition)エンジンです。画像内の文字を抽出し、テキストデータに変換することができます。日本語や英語など多言語に対応しています。
今回はeasyocrというライブラリを使います♪


手順1: コマンドプロンプトからTesseractを実行する方法

必要な準備

  1. Tesseract OCRをインストールします(公式サイトからダウンロード)。

  2. tesseract.exeのパスを確認し、環境変数に設定します(設定していない場合はフルパスを指定)。

  3. 日本語用の言語データ(jpn.traineddata)をインストールします。

基本のコマンド構文

tesseract [入力画像パス] [出力ファイルパス] -l [言語コード]

実行例: 日本語画像の文字抽出する方法

"C:\Programs\Tesseract-OCR\tesseract.exe" ^
 "C:\path\to\input\image.png" ^
 "C:\path\to\output\result" ^
 -l jpn

私の場合Windowsの実行例※コメントあり

\Tesseract-OCR>"C:hoghogeho\Tesseract-OCR\tesseract.exe" "C:hoghogehoge\test1.png" "C:\hogehogeoutput" -l jpn
#1OCRの末尾exeエグゼファイル・ 2インプット画像のパス・3アウトプット画像置きたい場所・4言語指定jpnなら日本語
  • ポイント:

    • 入力画像(例: image.png)を指定。

    • 出力先(例: result.txt)を指定。

    • 日本語の場合、言語コードはjpn。英語の場合はeng。

注意点

  • 入力ファイルは画像(PNG)など形式だけ対応。

  • PDFを使用する場合は画像に変換する必要があります。

  • 出力ファイルが指定したフォルダではなく、上位階層に作られることがあります。


手順2: PythonからTesseract OCRを使う方法

Pythonでは、pytesseractライブラリを使うことでTesseract OCRを活用できます。以下のコード例を参考にしてください。

Pythonのコード例

import pytesseract
from PIL import Image

# Tesseractのパスを指定
pytesseract.pytesseract.tesseract_cmd = r'C:\path\to\tesseract.exe'

# 画像を読み込む
image_path = r'C:\path\to\input\image.png'
image = Image.open(image_path)

# OCRを実行(日本語指定の場合)
text = pytesseract.image_to_string(image, lang='jpn')

# 結果を表示
print(text)

コードのポイント

  • pytesseract.pytesseract.tesseract_cmd: Tesseractの実行ファイルのパスを指定。環境変数に設定済みの場合は省略可能。

  • Image.open: 画像を読み込む。画像形式はPNGやJPGをサポート。

  • pytesseract.image_to_string: OCR処理を実行し、文字を抽出。lang='jpn'で日本語を指定。


PythonコードをVSCodeで実行する方法

Pythonスクリプト例: VSCode対応版

import pytesseract
from PIL import Image

# Tesseractのパスを指定(必要な場合・パスを通すことが出来ていればコメントで省略OKだよ!)
pytesseract.pytesseract.tesseract_cmd = r'C:\hogehoge\Tesseract-OCR\tesseract.exe'

# 画像を読み込む
image_path = r'C:\hogehoge\hansin_dirt1800_0win.png'  # 画像ファイルのパスを指定
image = Image.open(image_path)

# OCRを実行
text = pytesseract.image_to_string(image, lang='jpn')  # 日本語を解析する場合は 'jpn'

# 結果を表示
print(text)

VSCodeの使い方

  1. Python拡張機能をインストール。

  2. スクリプトを.pyファイルとして保存。

  3. ターミナルでpython [スクリプト名].pyを実行。


今後の課題

  • 出力ファイルの保存先を正確に指定する設定の確認。

  • PDF形式を処理できるワークフローの構築(例: PDFを画像に変換するスクリプトの導入)。

  • output先をコマンドプロンプトで指定した際に、該当箇所に保存されず一段階前の階層に保存された問題があった。

  • レイアウトがバラバラの日本語だと、日本語の解析能力が低い問題があった。


日本語の読み取りとレイアウト保持の精度を上げるためのライブラリ

テスト未完了ですがMENTAでご指導いただいたことをシェアします。

POINT
YOMITOKUライブラリは精度が良いらしいです!

「OCRの件ですが、日本の方が作った日本語に特化したライブラリも出てきたみたいなので、共有しておきますね。
まだ試してないので、動作は未確認ですが、かなり精度は良いように感じます。」
https://github.com/kotaro-kinoshita/yomitoku

MENTAでjacl3low先生より


これで、Tesseract OCRを使った文字抽出の基本がわかるはずです!
ぜひ試してみてくださいね😊

いいなと思ったら応援しよう!