TesseractOCRアプリケーションの作成について

前回の記事(https://inakaprogrammer.blogspot.com/2020/12/visualstudioocr.html)で出したOCRアプリケーションについて、作成方法のメモを残す。

 <ソリューションの構成について>

 画像の変換処理にかかる手間を考えて、下記の3つのプロジェクトに分ける
  1.画像の読取枠の定義を行うWPFアプリケーション(プロジェクト名:TesseractOCR)
     1つのパソコンで一つの起動
  2.1から呼び出されて読取枠ごとに画像を分割し、3.を呼び出すコンソールアプリケーション(プロジェクト名:OCRManager)
     1つのパソコンで一つの起動
  3.Tesseractを使ってOCRを実行するコンソールアプリケーション(プロジェクト名:OCR)
     1つのパソコンで複数の起動(上限設定可能)
 
 1つの画像に対して複数の読取枠を用意し、処理を実行するため3.を複数起動できるようにして処理速度を向上させる。
 ただし、パソコンにかかる負荷の問題もあるので同時実行の最大上限の制限をOCRManager.exeによって行う。
 ※上限を設けないと例えば100ファイル(1ファイル当たり読取枠20個)の場合、OCR.exeが同時に2000個起動することになってしまう。

<フォルダ構成>

C:.
└─TesseractOCR
    │  ER_TesseractOCR.a5er
    │  OcrDb.sqlite3
    │  TesseractOCR.iedx
    │  TesseractOCR.sln
    │  
    ├─Common                ・・・ソリューションで共通で利用する関数や定数を格納するフォルダ
    │      DataBaseAccess.cs         ・・・データベースへアクセスするためのクラスを定義
    │      SolutionCommon.cs         ・・・共通関数や定数を定義
    │      
    ├─OCR                  ・・・OCR.exeのプロジェクトのフォルダ
    │  │  Config.xml            ・・・DBへのパスや他のexeへのパスを格納
    │  │  OCR.csproj
    │  │  OCR.csproj.user
    │  │  Program.cs            ・・・画像をOCRする処理を記述
    │  ├─bin
    │  ├─obj
    │  ├─Properties
    │  │      launchSettings.json
    │  │      
    │  └─tessdata             ・・・Tesseractが利用する学習済みのデータ
    │      │  eng.traineddata
    │      │  jpn.traineddata
    │      │  jpn_vert.traineddata
    │      │  pdf.ttf
    │      │  _jpn.traineddata
    │      └─traindata
    │              Best____jpn.traineddata
    │              Best____jpn_vert.traineddata
    │              Fast____jpn.traineddata
    │              OCR3.04.00____jpn.traineddata
    │              readme.txt
    │              Ubuntu___Japanese.traineddata
    │              Ubuntu___Japanese_vert.traineddata
    │              Ubuntu___jpn.traineddata
    │              Ubuntu___jpn_vert.traineddata
    │              
    ├─OCRManager              ・・・OCRManager.exeのプロジェクトのフォルダ
    │  │  Config.xml            ・・・DBへのパスや他のexeへのパスを格納
    │  │  OCRManager.csproj
    │  │  Program.cs            ・・・画像を分割し、OCR.exeを呼び出す
    │  │  
    │  ├─bin
    │  └─obj
    │  
    └─TesseractOCR             ・・・TesseractOCR.exeのプロジェクトのフォルダ
        │  App.xaml
        │  AssemblyInfo.cs
        │  Config.xml
        │  MainWindow.xaml
        │  pg01_0100_Main.xaml
        │  pg02_0100_Rpt.xaml
        │  pg02_0200_Rpt.xaml
        │  pg02_0210_Rpt.xaml
        │  pg03_0100_Job.xaml
        │  pg03_0200_Job.xaml
        │  pg03_0210_Job.xaml
        │  pg90_0100_Opt.xaml
        │  ProjectCommon.cs
        │  TesseractOCR.csproj
        │  TesseractOCR.csproj.user
        │  
        ├─backgroundimage
        ├─bin
        ├─controls
        │      BaseWindow.xaml
        │      CsButton.cs
        │      CsCheckBox.cs
        │      CsComboBox.cs
        │      CsDataGrid.cs
        │      CsPage.cs
        │      CsTextBox.cs
        │      CsWindow.cs
        │      
        ├─modelbase
        │      ViewModelBase.cs
        │      
        ├─obj
        │                  
        └─resource
            │  BaseResorce.xaml
            │  ControlResource.xaml
            │  ProjectResource.xaml
            │  
            └─converter
                    StringToNumberConverter.cs

<主なテーブル>

 配番テーブルや設定テーブルについては、画像を参照
 ※テーブルの作成は「A5Mk2」を利用


  【TesseractOCR.exe】でデータを登録する
  ・帳票定義基本テーブル
    帳票名と備考を登録する
  ・帳票定義詳細テーブル
    読取枠の定義(XY座標、高さ、読取タイプ等)を登録する
  ・OCRジョブ基本テーブル
    OCR処理の実行指示を登録する
    ジョブの状況やダウンロード済みかどうかを判断するためのダウンロード日時を登録する
  ・OCRジョブ詳細テーブル
    OCR処理の対象となるファイルを登録する
  【OCRManager.exe】でデータを登録する
  ・OCR実行指示テーブル
    OCRジョブ詳細テーブルで指定されているファイルを帳票定義詳細テーブルで定義されている読取枠ごとに分割して、tempフォルダに配置した結果を登録する。
  【OCR.exe】でデータを更新する
  ・OCR実行指示テーブル
    OCRの結果を登録する

<プログラムの作成手順>

 人によって違いはあるとは思うが、個人的にはモチベーションの維持のために今回は下記の手順でプログラムを作成していく。
  <手順1.OCR.exeを作成> 


0 件のコメント:

コメントを投稿

PowerShellでEdgeを自動化(インストール不要。参考:郵便追跡サービス自動操作)

1.経緯について  RPAのソフトをインストールできないので、これまでVBSでCreateObjectでブラウザの自動操作をすることがたまにあった。 ※いざというときの手札として持っているだけで安心感が段違い  見た目上IEがインストールされていなくても、CreateObject...