Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
5
Help us understand the problem. What is going on with this article?
@tifa2chan

tesserocr と OpenCV を組み合わせてみる

More than 1 year has passed since last update.

はじめに

最近始めたばかりの tesserocr と OpenCV で何かやってみたくなったので試してみました。
それぞれ初心者レベルの組み合わせなので、初めての方でもできた気になります(笑)

やったこと

とりあえず何か試してみたいというわけで、下記をやってみました。
Pythonサイトにある、Getting Started部分を画像にしてのテキスト抽出です。

  • tesserocrの信頼度スコアが90以上を青、80未満を赤として、テキストにOpenCVで枠をつけます
  • tesserocrで画像内の文字を抽出して、抽出された文字をOpenCVで描画します

このような結果になりました。(スコアが低くても高いのと対して変わらないように感じます。)
tesserocr_opencv.png

ソースコード

tesserocr のサイトにある、Advanced API ExamplesのソースにOpenCVを組み込んだ形のつぎはぎコードです。

import locale
locale.setlocale(locale.LC_ALL, 'C')
import tesserocr
from tesserocr import PyTessBaseAPI, RIL, PSM
from PIL import Image
import cv2

lang='eng'
img_file_name = 'python.png'
image = Image.open(img_file_name)
draw_img = cv2.imread(img_file_name)
font = cv2.FONT_HERSHEY_SIMPLEX

with PyTessBaseAPI(lang=lang, psm=PSM.SINGLE_BLOCK) as api:
    api.SetImage(image)
    boxes = api.GetComponentImages(RIL.TEXTLINE, True)
    print('Found {} textline image components.'.format(len(boxes)))

    for i, (im, box, _, _) in enumerate(boxes):
        x, y, w, h = box['x'], box['y'], box['w'], box['h']
        api.SetRectangle(x, y, w, h)
        ocrResult = api.GetUTF8Text().strip()
        conf = api.MeanTextConf()
        if conf >= 90:
            cv2.rectangle(draw_img, (x, y), (x+w, y+h), (255, 0, 0), 1)
        elif conf < 80:
            cv2.rectangle(draw_img, (x, y), (x+w, y+h), (0, 0, 255), 1)

        cv2.putText(draw_img, str(conf) + ': ' + ocrResult, (x, y), font, 0.6, (255,0,255), 1)

        print ((u"Box[{0}]: x={x}, y={y}, w={w}, h={h}, "
               "confidence: {1}, text: {2}").format(i, conf, ocrResult, **box))

    cv2.imwrite("ouput.png", draw_img)

5
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
tifa2chan
主にアプリ開発をしています。
future
ITを武器とした課題解決型のコンサルティングサービスを提供します

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
5
Help us understand the problem. What is going on with this article?