【画像処理】 ocr の認識率を上げるための二値化
こんにちは。
仕事の自動化にやりがいと達成感を感じるガッくんです。
この記事の目次
目的
二値化は画像処理ではかなり良く出てくる処理です。
リンクの記事でグレースケール変換を纏めましたが、二値化はグレースケール変換した画像に対して行います。
ocr の認識率を上げるためのグレースケール変換 - 解析エンジニアの自動化 blog
画像の二値化をまとめます。
プログラム
ソースコード
# -*- coding: utf-8 -*-
###############################################################################
# ライブラリインポート
###############################################################################
import os # os の情報を扱うライブラリ
import pytesseract # tesseract の python 用ライブラリ
from PIL import Image # 画像処理ライブラリ
# グレースケール変換関数
def ConversionGrayScale(img):
gray_img = img.convert('L')
return gray_img
# 二値化(値が 200 未満は 0 にする)関数
def BinarizationImage(img):
WhiteOnBlack_img = img.point(lambda x:0 if x < 200 else x)
return WhiteOnBlack_img
# カレントディレクトリを変更する
os.chdir("C:\\作業\ocr-Preprocessing")
# ファイル名定義
Image000 = '001_Const_Image.jpg'
Image020 = '020_WhiteOnBlack_Const_Image.jpg'
# pytesseract に tesseract のパスを通す
pytesseract.tesseract_cmd='C:\Program Files (x86)\Tesseract-OCR\tesseract.exe'
#################### 画像の読み込み ####################
img = Image.open(Image000)
# グレースケール変換
gray_img = ConversionGrayScale(img)
# 二値化
Black_img = BinarizationImage(gray_img)
Black_img.save(Image020)
コメント
カラー画像が白黒画像に…なってませんね。
二値化関数はコメントの通り、値が 200 未満は 0 にしていますが、200 以上はそのままで何も処理をしていませんでした。 255 にしないと二値化になりません。
以上