Python+TesseractによるOCR(光学文字認識)

概要

  • M1 Macにて、OCR処理を行うための環境構築およびPythonでの使用例を示す
  • OCR処理のバックエンドはTesseractを使用
  • OCR処理のラッパーはpytesseractを使用
    • 他にも、pyocrなどがあるが、pytesseractのほうがGoogle検索結果件数が多かったので、採用

環境

インストール手順

①tesseractのインストール

$ brew install tesseract

②pytesseractのインストール

$ conda install pytesseract

③pytesseractの日本語パッケージを追加

  • いろいろやり方があるようだが、ここでは個別でパッケージをダウンロードする方法とする
    • ダウンロード元:https://packages.ubuntu.com/focal/tesseract-ocr-jpn (githubのものより、こちらの方が精度がよいらしい)
    • 「tesseract-langソースパッケージをダウンロード」より、「tesseract-lang_4.00~git30-7274cfa.orig.tar.xz」をダウンロード
  • ダウンロードしたファイルを解凍し、「jpn.traineddata」「jpn_vert.traineddata」を取得
  • 以下コマンドを用いて、tesseractの学習済みモデルのディレクトリを探す
$ brew list tesseract

   (例:/opt/homebrew/Cellar/tesseract/5.2.0/share/tessdata/に保存されている)

  • このディレクトリに、先ほどの日本語パッケージ2ファイルをコピー
  • 以下コマンドで、「jpn」「jpn_vert」が表示されることを確認
$ tesseract --list-langs

※補足1:以下コマンドではFomulaeがないためエラーとなる

$ brew install tesseract-ocr-jpn

※補足2:以下コマンドでインストールできるようだが、容量が大きそう(約600MB?、日本語だけなら数MBでよいが…)

$ brew install tesseract-lang

Pythonでの動作例

import pytesseract
from PIL import Image
INPUT_IMG = r'test.png'
img = Image.open(INPUT_IMG)
result = pytesseract.image_to_string(image=img,lang='jpn')
print(result)

M1 MacでTensorFlow環境構築

M1 MacでTensorFlow2.8環境構築

概要

  • M1 MacにTensorFlow環境を構築する
  • conda(miniconda)は導入済みとする
  • TensorFlowバージョン:2.8(2022/5/15時点で、以下手順を実施した場合)

環境

1.仮想環境を作成

conda create --name tf2_8 python=3.9
conda activate tf2_8

2.パッケージのインストール

conda install numpy opencv matplotlib scikit-learn pandas jupyter

3.TensorFlowのインストール

conda install -c apple tensorflow-deps
python -m pip install tensorflow-macos
python -m pip install tensorflow-metal

M1 MacBook Air TensorFlow環境構築メモ(2021/9/15版)

M1 MacBook Air TensorFlow環境構築メモ(2021/9/15版)

環境

方針

  • PythonでTensorFlow環境に加え、matplotlib等の機械学習環境を一式そろえる
  • HomeBrewおよび、miniforgeを利用
  • ここで紹介されているtensorflow-metalは、OS要件が12.0以上のため注意

インストール手順

1. Xcodeのインストール
  • Xcodeおよび、Command Line Toolsをインストール
    • XcodeApp Storeより
    • Command Line Toolは以下コマンドでインストール可能
xcode-select --install
2. HomeBrewおよびminiforgeのインストール
  • HomeBrewは公式の手順通りにインストール(M1対応版)
    • miniforgeは以下コマンドでインストール可能
brew install miniforge
3. TensorFlowのインストール
  • ここの「Installing TensorFlow」の項目を参考に、以下コマンドによりインストール
    • 事前に、environment.ymlをダウンロードしておく
    • 補足:上記参考ページの「Example Command」のコード例は、メンテナンスされていないと思われるので、pip installの行だけは「For Apple Silicon」の項目からコピーした方がよい
conda env create --file=environment.yml --name=test
conda activate test
pip install --upgrade --force --no-dependencies https://github.com/apple/tensorflow_macos/releases/download/v0.1alpha3/tensorflow_macos-0.1a3-cp38-cp38-macosx_11_0_arm64.whl https://github.com/apple/tensorflow_macos/releases/download/v0.1alpha3/tensorflow_addons_macos-0.1a3-cp38-cp38-macosx_11_0_arm64.whl
4. その他必要なパッケージのインストール
conda install scikit-learn matplotlib pandas jupyter opencv

補足

  • VSCodeは、conda環境を認識してくれる

NNのバッチサイズ変更による学習結果の変化

NNのバッチサイズ変更による学習結果の変化

概要

結果

  • バッチサイズがある値より小さいと、同じエポック数でも精度があがっていない
    • エポック1回分の学習回数が異なるためと考えられる
  • またある値より大きいと、だいたい同じ精度となっている
    • 学習が収束に向かうため
  • 可能ならばバッチサイズは大きめにとるとよさそう

f:id:storikai:20210504213522p:plain

環境

  • Python 3.7.10
  • TensorFlow 2.4.1

M1 MacBook Air TensorFlow環境構築メモ

M1 MacBook Air TensorFlow環境構築メモ

環境

TensorFlow環境構築

方針
  • TensorFlow
  • Python
    • 上記を利用するため、PythonXcode Command Line Toolsを利用(tensorflow_macosのrequirementsに記載あり)
インストール手順
  1. Xcodeをインストール(App Storeより)
  2. Xcode Command Line Toolsをインストール
$ xcode-select --install

※これでPython 3.8.2がインストールされます(2021/1/9)。

  1. tensorflow_macosをインストール

  2. tensorflow_macosのページの、INSTALLATIONの項目に記載のある、以下スクリプト(仮想環境を構築してくれる)を実行

  3. 仮想環境の場所は、デフォルトでよいなら問題ないが、別の場所としたいなら、一つ上のディレクトリまでは存在する必要あり
    • 例:/Users/aaa/bbb/tensorflow_macos_venv/にしたいなら、/Users/aaa/bbbまでは存在する必要がある
$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/apple/tensorflow_macos/master/scripts/download_and_install.sh)"
  1. 仮想環境(venv)をactivate
$ . (仮想環境ディレクトリ)/bin/activate
補足
  • VSCode(Python拡張機能使用)を使用したい場合、Insider版(Apple Silicon)を使用する必要がある(2021/2/7時点)
    • Insider版(Apple Silicon)でない場合、実行時にエラーとなってしまう

PowerShell Basic

PowerShell Basic

前提知識

スクリプトの実行
  • スクリプトファイルの拡張子:.ps1
  • スクリプトを実行するには、実行ポリシーを設定する必要あり(要管理者権限)
> Set-ExecutionPolicy -RemoteSigned
# RemoteSigned : ローカルスクリプトは実行可、ダウンロードしたものは要署名
> Get-ExecutionPolicy # 設定できているかの確認
ヘルプ
> help <コマンドレット名>
コメント
  • #でコメント(1行)
  • <# ... #>でコメント(複数行)
リダイレクト
  • >でリダイレクト
  • >>でリダイレクト(追記)
変数
  • 変数名の先頭は$で始まる
  • 大文字/小文字は区別されない
  • 型は、.NETのものが使用できる
  • 型を指定するには、変数名の前に型を記載
$tmp = "temp"
[int]$cnt = 123 # 型を指定
[string]$str = "test"
定数
  • 文字列は、シングルorダブルクォーテーションで囲む
    • シングルクォーテーションの場合は、変数展開なし
    • ダブルクォーテーションの場合は、変数展開あり
  • 文字列連結は、「+」記号
  • エスケープシーケンスはバッククォート
    • タブ : `t
    • 改行 : `r`n
演算子
演算子 意味
-eq ==
-ne !=
-gt >
-ge >=
-lt <
-le <=

ファイル関連

フロー制御

for
for($i=0;$i<3:$i++)
{
    # 処理
}

foreach($tmp in array)
{
    # 処理
}
if
if($tmp==1)
{
}
elseif($tmp==2)
{
}
else
{
}

関数

パラメーターなし
function func1{
    Write-Output "func1 call"
}

func1
パラメーターあり
function func2 {
    param (
        $arg1,
        $arg2
    )
    Write-Output "func2 call"
    Write-Output " arg1 : $arg1"
    Write-Output " arg2 : $arg2"
}

func2 "abc" 123
パラメーターあり(型指定あり)
function func3 {
    param (
        [string]$arg1,
        [int]$arg2
    )
    Write-Output "func3 call"
    Write-Output " arg1 : $arg1"
    Write-Output " arg2 : $arg2"
}

func3 -arg2 456 -arg1 "ABC"