## VietOCR

### 概要

VietOCRはJavaで書かれたTesseract OCRエンジンのGUIフロントエンドです。一般的な画像形式やマルチページTIFF形式の文字認識をサポートします。プログラムはOCR処理に付き物の誤認識を修正する後処理をし、認識結果の正解率を向上させます。コマンドラインから実行すればコンソールアプリケーションとしても機能します。

バッチ処理がサポートされるようになりました。このプログラムは監視フォルダ内の新しい画像ファイルを監視し、OCRエンジンを通してそれを自動処理し出力フォルダへ認識結果を出力します。

### システム要件

Javaランタイム環境8以降。 On Windows, Microsoft Visual C++ v14 Redistributable Package is also required.

### インストール

Tesseract 4.0のWindows実行ファイルがプログラムにバンドルされています。Tesseractの追加言語データパックはサブディレクトリ`tessdata`に配置してください。そのファイル名はISO639-3コードで始まります。

LinuxではTesseractとその言語データパックはGraphics(universe)リポジトリにあります。Synapticを使用するか次のコマンドでそれらをインストールできます。

> `sudo apt-get install tesseract-ocr tesseract-ocr-eng tesseract-ocr-jpn`

ファイルはそれぞれ`/usr/bin`と`/usr/share/tesseract-ocr/tessdata`リポジトリに配置されます。もしTesseractをソースからビルドしインストールした場合は`/usr/local/bin`と`/usr/local/share/tessdata`に配置されます。 VietOCRの`設定`メニューでTesseractの実行ファイルのディレクトリを指定してください。データが標準の場所以外にある場合は`tessdata`へのソフトリンクを要求されます。環境変数`TESSDATA_PREFIX`を設定してVietOCRに`tessdata`の位置を知らせます。

> `export TESSDATA_PREFIX=/usr/local/share/`

他のプラットフォームの場合はTesseract Wikiページを調べてください。

VietOCRでは言語データをダウンロードメニューを通して、言語パックの選択、ダウンロード、インストールのサポートを提供します。`tessdata`フォルダがLinuxの`/usr`やWindowsの`C:\Program Files`のようなシステムフォルダ内にある場合は、ダウンロードしたデータをフォルダにインストールできるようにするために、rootまたは管理者としてプログラムを実行してください。

WindowsではWindows Image Acquisition v2.0ライブラリを通してスキャンをサポートします。

LinuxでスキャンするにはSANEパッケージをインストールします。

> `sudo apt-get install libsane sane sane-utils libsane-extras xsane`

PDFBoxを通したPDFサポートが可能です。

Hunspellを通してスペルチェック機能を利用できます。その辞書ファイル（`.aff`、`.dic`）をVietOCRの`dict`フォルダに配置してください。`user.dic`は1行につき1単語ずつカスタム単語リストを含むUTF-8エンコードのファイルです。

LinuxではHunspellとその辞書をSynapticまたは次のように`apt`でインストールします。

> `sudo apt-get install hunspell hunspell-en-us`

### 説明

プログラムを起動するには、

> `java -jar VietOCR.jar`

注意 メモリ不足例外が発生した場合は、jarファイルを使用せずに`OCR`のスクリプトファイルを実行します。

ベトナム語の言語データはTimes New Roman、Arial、Verdana、Courier Newのフォントで生成されています。そのためよく似たフォントグリフを持つ画像ではより良い認識成功率を示すでしょう。サポートしているフォントと違った見かけのフォントグリフを持つ画像のOCRでは、一般的に、特別にそれらの書体をTesseractに学習させた別の言語データパックの生成が必要です。一部のVNI、TCVN3(ABC)フォントの言語データも最新バージョンにバンドルしています。

OCR画像はモノクロ（白黒）またはグレースケールで少なくとも200dpi（1インチあたりのドット数）から400dpiの解像度でスキャンしてください。優れた認識精度を求めて高解像度でスキャンする必要はありません。現在ベトナム語の認識精度は97％以上であり、それはTesseractの次のリリースでさらに改善されるかもしれません。もしそうなったとしても実際の認識率はまだスキャンされた画像の品質に大きく依存します。典型的なスキャン設定は300dpi、1bit（=1bpp 1ピクセルあたり1ビット）白黒または8bitグレースケール、無圧縮TIFFまたはPNG形式です。

スクリーンショット モードは低解像度の画像に対して、スクリーン プリントのように300dpiで再スケーリングしてより良い認識率を提供します。

組込みのテキスト後処理アルゴリズムに加え、UTF-8-encoded tab-delimited `x.DangAmbigs.txt`という名前のテキストファイルを使用した独自のカスタムテキスト置換スキームを追加できます。xはISO639-3言語コードです。 プレーンテキスト置換とRegexテキスト置換の両方がサポートされています。

組込みツールではOCR操作を便利にするように複数の画像やPDFファイルを単一のものに結合したり、メモリ不足例外が発生しそうな大きなPDFファイルを小さく分割したりする機能を提供します。

### 後処理

誤認識は一般的に3つのカテゴリに分類できます。誤認識の多くは文字の大文字/小文字に関係し（例 HOA、nhắC）、一般的なUnicode用テキストエディタで簡単に修正できます。他の多くの誤認識は、ダイアクリティカルマークの欠落、似ている形状の間違った文字など（huu – hưu、mang – marg、h0a – hoa、la – 1a、uhìu - nhìn）のOCR処理結果です。またこれらはスペルチェッカプログラムによって簡単に修正できます。組込みの後処理機能は前述の誤りの多くを修正するのに役立ちます。

誤認識の最後のカテゴリはセマンティックエラーであり、検出するのが最も困難です。これはその単語が辞書内では有効なエントリですが、文脈としては間違っていることを意味します。（例 tinh – tình、vân – vấn）これらのエラーはエディタを通して読み、元画像に応じてそれらを手作業で修正する必要があります。

組込み機能を使用してOCR誤認識の最初の2つのカテゴリを修正する方法は次のとおりです。

1. 行をグループ化します。各行が別々の1行段落としてOCRされるように、行が属する段落にグループ化してください。書式メニュー下の改行を削除機能を使用します。詩ではこの操作が必要ない場合がありますので注意してください。
2. 同じく書式メニュー下の文字ケースを変更を選択し、文字ケースエラーの大部分を修正するためにセンテンスケースを選択します。残りの文字ケースエラー部分を見つけて修正します。
3. 統合スペルチェックを使用してスペルミスエラーを修正します。

以上の処理により一般的な誤認識の大部分を除去できます。残るセマンティックエラーは少ないですが、人間がエディタを通して読み、スキャン元の文書のようにその文書を編集する必要があります。必要なければエラーなしです。

質問がある場合は VietOCRフォーラムに投稿してください。