はじめに
MMOCRを使ってOCRを作成する(Text Recognation)①
MMOCRを使ってOCRを作成する(Text Recognation)②
を通して、MMOCRを使って文字列を認識する方法を学びました。
OCRを実現するために、まず画像のどこに文字列があるのかを認識する必要があります。
今回は、そのためのText Detectionを学習するタスクについてみていきたいと思います。
学習データの準備
以下の形式で作成したJSONファイルが必要です。
基本的には、 COCO Datasetと同様の形式になりますが、対象の文字列を記載したテキストファイルのファイル名を入れる必要があります。 対象のテキストファイルは、ルートパスの下に"annotation"というフォルダを作成して、annotationフォルダから下のファイルパスを記載してください。
instances_test.json
{
"images":
["file_name":画像ファイル名,
"height":画像の高さ,
"width":画像の横幅,
"segm_file":文字列を保存したテキストファイルのファイル名,
"id",画像のファイルのID(一意),
.....,
....],
"categories":
[{"id": 1, "name": "text"}],
"annotations":
[{"iscrowd": 1(たくさんの文字があれば1),
"category_id": "1"(基本的にはテキスト以外のものは対象がなので、常に1),
"bbox": [左上のx座標, 左上のy座標, 高さ, 幅],
"area": 面積(bboxから計算可能),
"segmentation": [[x1, y1, x2, y2, x3 , y3 , x4 , y4 , .......]](ポリゴン形式で各頂点の座標を左周りに記入),
"image_id": 画像のファイルID,
"id": アノテーションのID(一意)},
{....},
....
]
}
なお、COCO Dataset形式については、以下の記事などが参考になると思います。
COCO Formatの作り方
学習の実施
前回同様以下にgoogle collaboratory上で動くサンプルをgithubで用意しています。
サンプル
学習タスクについては、今までとほぼ同じ内容なので、割愛します。
以下の部分に用意したデータのパス情報を入力すれば学習が開始します。
## アノテーションフォルダの設定
train_label_path = 訓練用のJSONファイル
val_label_path = 検証用のJSONファイル
# 画像ファイルのパス
train_img_path = 訓練用画像ファイルのフォルダパス
val_img_path = 検証用画像ファイルのフォルダパス
# ルートフォルダ
root_path = ルートフォルダのパス
# 作業フォルダ(学習時のモデル出力先(エポック毎に出力))
work_path = '/content/work_dir'
## 最後に
前回までの「Text Recognation」のタスクと、「Text Detection」のタスクを組み合わせることで、AI OCRの作成が可能になりました。
しかし、この2つのタスクを別々に学習するのは非効率な感がありますので、次回はこの2つのタスクを一度に実施できる「KEY INFORMATION EXTRACTION MODELS」タスクについて解説したいと思っています。