1
4

tesseract-ocr

インストール

sudo apt-get -y install tesseract-ocr tesseract-ocr-jpn
pip install pytesseract

リポジトリのリンクから日本語データの学習ファイルをダウンロードして

import pytesseract
from PIL import Image

im = Image.open(image_path)

text = pytesseract.image_to_string(img, lang='jpn')
boxs = pytesseract.image_to_boxes(img, lang='jpn')

print(text)
print(boxs)

スクリーンショット 2024-02-15 2.14.33.png

日本語を勉強する外国人のイラスト

日 91 845 151 885 0
本 121 829 181 889 0
語 186 845 204 884 0
を 209 847 244 884 0
勉 250 845 336 885 0
強 340 845 638 885 0
す 351 829 401 889 0
る 376 829 436 889 0
外 406 845 506 885 0
国 501 845 561 885 0
人 531 829 591 889 0
の 561 829 631 889 0
イ 596 829 666 889 0
ラ 651 847 684 882 0
ス 691 848 727 881 0
ト 744 847 767 884 0
~ 121 10 742 744 0

OCR_Japanease

インストール

git clone https://github.com/tanreinama/OCR_Japanease.git
cd OCR_Japanease
wget https://s3-ap-northeast-1.amazonaws.com/ailab.nama.ne.jp/models/ocr_jp-v2.zip
unzip ocr_jp-v2.zip

実行

python3 ocr_japanease.py --dpi 72 ../sample_image.png

(DPI=Dots per inch(1インチ当たりのドット数))

[Block #0]
日本語を勉強する外国人のイラスト
[Block #1]

PaddleOCR

インストール

pip3 install paddlepaddle-gpu # for gpu user please install paddlepaddle-gpu
pip3 install paddleocr
paddleocr --image_dir image.png --lang=japan

[2024/02/14 17:50:56] ppocr DEBUG: dt_boxes num : 5, elapsed : 0.49741458892822266
[2024/02/14 17:50:56] ppocr DEBUG: rec_res num : 5, elapsed : 0.1058814525604248
[2024/02/14 17:50:56] ppocr INFO: [[[82.0, 29.0], [761.0, 27.0], [761.0, 62.0], [82.0, 64.0]], ('日本語を勉強する外国人のイラス', 0.936710000038147)]
[2024/02/14 17:50:56] ppocr INFO: [[[192.0, 167.0], [301.0, 167.0], [301.0, 299.0], [192.0, 299.0]], ('お', 0.8548082709312439)]
[2024/02/14 17:50:56] ppocr INFO: [[[118.0, 538.0], [189.0, 530.0], [203.0, 655.0], [133.0, 663.0]], ('`し', 0.5000075101852417)]
[2024/02/14 17:50:56] ppocr INFO: [[[425.0, 686.0], [479.0, 695.0], [453.0, 860.0], [399.0, 852.0]], ('にほんご', 0.5786789059638977)]

easyOCR

インストール

pip install easyocr

実行

import easyocr
reader = easyocr.Reader(['ja']) # this needs to run only once to load the model into memory
result = reader.readtext('image.png')

[([[71, 17], [777, 17], [777, 77], [71, 77]],
'日本語を勉強する外国人のイラスト',
0.9960510366271759),
([[184, 164], [310, 164], [310, 306], [184, 306]], 'あ', 0.9665977627230546),
([[422.5634927616013, 674.0119175373044],
[484.42285144524953, 681.7692263219104],
[459.4365072383987, 872.9880824626956],
[397.57714855475047, 865.2307736780896]],
'@',
0.022590751778595042)]

どれがいいか個人的感想

easyOCRが使いやすいし、精度もそこそこ良かった気がします。

🐣


フリーランスエンジニアです。
AIについて色々記事を書いていますのでよかったらプロフィールを見てみてください。

もし以下のようなご要望をお持ちでしたらお気軽にご相談ください。
AIサービスを開発したい、ビジネスにAIを組み込んで効率化したい、AIを使ったスマホアプリを開発したい、
ARを使ったアプリケーションを作りたい、スマホアプリを作りたいけどどこに相談したらいいかわからない…

いずれも中間コストを省いたリーズナブルな価格でお請けできます。

お仕事のご相談はこちらまで
rockyshikoku@gmail.com

機械学習やAR技術を使ったアプリケーションを作っています。
機械学習/AR関連の情報を発信しています。

X
Medium
GitHub

1
4
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
4