【Python】3分でOCR環境を立ち上げ Google Colaboratory

2018-07-23
python%E6%A9%9F%E6%A2%B0%E5%AD%A6%E7%BF%92%E5%8F%AF%E8%A6%96%E5%8C%96%E7%94%BB%E5%83%8F%E5%87%A6%E7%90%86opencv
    

目次

概要

3分くらいでOCRができる環境を立ち上ます。 Google Colaboratoryを使います。もちろんpython。

Google Colaboratory

Jupyter Notebook環境を無償で利用できる上、Google Driveとの連携が可能。 同様な機能を提供するサービスにAzure Notebooksがありますが、 apt・pipコマンドが叩ける点、GPUが用意されている点などから Google Colaboratoryを使っています。

pyocr

PyOcrを動かせる環境を作ります。 tesseractと関連パッケージ + 日本語の特徴量を導入します。 ノートブックでこのコマンドを叩きます。

!apt install tesseract-ocr libtesseract-dev tesseract-ocr-jpn
!pip install pyocr

これでだけで環境が完成

ファイルアップロード

ローカルの画像をノートブックにアップロードします。

from google.colab import files
uploaded = files.upload()

このコマンドを叩くとファイルアップロードのダイアログが出現します。 アップロードした画像は適当な名前をつけて保存します。

OCR実行

OCR自体は

import pyocr
import pyocr.builders
from PIL import Image

img = Image.open('string_sample.png')
txt = tool.image_to_string(
  img,
  lang="eng+jpn",
  builder=pyocr.builders.TextBuilder(tesseract_layout=6)
)

これで実行可能です。 もう少し精度を上げるためにOpenCVで最適化していきます。

import sys
import pyocr
import pyocr.builders
import cv2
from PIL import Image
import matplotlib.pyplot as plt

tools = pyocr.get_available_tools()

im = cv2.imread('text.png')
im_gray = cv2.cvtColor(im, cv2.COLOR_BGR2GRAY)
im_blur = cv2.GaussianBlur(im_gray, (5, 5), 0)
th1 = cv2.adaptiveThreshold(im_blur, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY, 11, 2)

txt = tool.image_to_string(
  Image.fromarray(im_gray),
  lang = 'eng+jpn'
)

print(txt)

参考

https://qiita.com/it__ssei/items/fd804dcb10997566593b

    
s-yoshiki
s-yoshiki
githubtwitterqiita
Web作ってますが、インタラクティブなプログラミングも好きです。
JavaScript / Vue / node.js / PHP / AWS / OpenCV

関連記事

Selenium + Python でYahooのログインや検索・メールの操作を自動化する。
環境 Selenium環境の構築 Seleniumのインストール 検証 Yahoo検索する Yahooにログイン/ログアウトする Yahooメールの操作〜ゴミ箱を空にする サンプルソース 参考 Selenium + PythonでYahoo…

macOSにOpenCV4をインストール
パッケージの情報 インストール 試す with Python3 macOS (MacBook Pro 2018 13 inchi)にhomebrewを用いてOpenCVをインストールする方法。 パッケージの情報 まず、brew search と brew info…

draw.ioも良いけどEdrawも良さそう
はじめに Edraw その他 はじめに ダイアグラム作成ツールを探しているとdraw.ioをお勧めする声が目立ちますが、その中でEdrawというものを見つけました。 試してみたところ draw.ioも手軽で良かったけどEdrawも良さそうな感じでした。 Edraw…

エンジニアなMacBookのセットアップ 開発環境の構築
ブラウザ関連 Homebrewのインストール ターミナル環境系 Hyper エディタ VSCode typora CLIツール Git 言語系 Python node.js MacBookPro…

OpenCV.jsを動かしてみる + デモ
環境 OpenCV.jsのセットアップ サンプルソース グレースケール 2値化 Cannyエッジ 輪郭抽出 ガウシアン デモ OpenCV.jsを試してみました。 環境 OpenCV.js v4.1.0 OpenCV.jsのセットアップ OpenCVをWasm…

JavaScriptで画像のヒストグラムの正規化
サンプルソース 画像のヒストグラムを正規化するコードの紹介 サンプルソース

画像のヒストグラムを表示する Chart.js JavaScript canvas
ヒストグラム算出のサンプルコード インストール ヒストグラム表示クラス ヒストグラム算出 デモ 出力結果 参考 画像のヒストグラムをJavaScriptで算出してグラフとして表示してみます。 ヒストグラム算出のサンプルコード ヒストグラムの表示にChart.js…

画像のプーリング処理 canvas + JavaScript
プーリング処理について サンプルソース デモ 参考文献 JavaScriptで画像のプーリング処理を行ってみました。 プーリング処理について プーリングは畳み込みに似た処理で、CNN…

画像の減色処理 サンプルコードとデモ JavaScript + canvas
減色処理について デモ ソース 画像の減色処理を行ってみた。 サンプルコードとデモの紹介。 環境は JavaScript + Canvas。 減色処理について 通常、Canvas上での画像のRGBそれぞれの値は0〜255までの256^…

画像のHSV変換 JavaScript + canvas
デモ ソース 参考 画像のHSV変換を行うサンプルコードとデモの紹介 デモ 以下のリンクでデモを動かしています。 https://s-yoshiki.github.io/Gasyori100knockJS/#/questions/ans5 デモの内容はRGB…

最新の投稿

Python poetryでパッケージ開発 PyPIで公開 Pytestでテスト CIをGitHub Actionsで回す
Poetry でパッケージ開発 pytest でユニットテストを実施しカバレッジを算出する パッケージをビルドし PyPI で公開する 検証環境にデプロイする 本番環境にデプロイする GitHub Actions で CI を回す codecovの設定 GitHub…

Perlでconstant(定数)をhashのキーに使う
ハマった事象 解決方法 1 括弧をつける 2 & をつける 参考にしたサイト Perlでconstant(定数)をhash…

php-fpmのステータスページを表示 Apache & htaccess
試した環境 php-fpm の pm.status_path について php-fpmのconfの設定 .htaccess の設定 アクセスしてみる 参考にしたサイト Apache環境で php-fpm のステータスページを htaccess…

DBクライアントツールはDBeaverをおすすめしたい
DBeaver について 特徴 対応DB 対応OS 利用環境 アーカイブ インストール windows mac Linux コネクションの作成 SQLを実行する その他 CloudBeaverについて 今までいくつかのDB…

CentOS8 に Oracle12.2 clientをインストールする
実施した環境 セットアップ clientツールの 準備 インストール 環境変数にパスを通す 実行 libnsl.so.1: cannot open shared object file と表示される場合 CentOS8 に Oracle12.2 client…

フェールセーフやフェールソフト・フールプルーフ 障害対策用語の整理

JSで32ビット符号付き整数に対してのビット演算でハマった
具体例 参考にしたサイト JSでサブネットマスクの計算を行おうとしたとき、ビット演算でハマりました。その時のメモです。 JSでサブネットマスクの計算 JSでビット演算子を利用する場合 3…

Gitにプロキシを設定する
プロキシを設定する 確認 Gitでプロキシを通しておくメモです。 プロキシを設定する 以下のコマンドでproxyを通します。 ※ がプロキシのURL…

JSでIPアドレスがサブネットマスクで指定した範囲内にあるか判定する
IPアドレスが指定した範囲内にあるかどうか判定 参考にしたサイト JSでIPアドレス(IPv4)が指定したサブネットの範囲に含まれるか判定するロジックを作った時の記録です。 IPアドレスが指定した範囲内にあるかどうか判定 処理としては、IP…

プログラムの数値計算で発生する誤差の種類 丸め誤差・打ち切り誤差・桁落ち
はじめに 誤差の種類 丸め誤差 打ち切り誤差 桁落ち 情報落ち 桁溢れ誤差 参考にしたサイト コンピュータで出てくる誤差はいくつかありますが、 それらをコードに落として整理しました。 はじめに 例えば の計算の答えは 0.6666666666…

Tags

Dates

© 2021   404 motivation not found