FC2ブログ

誰もがやさしく微笑みあえる、その日まで

東日本大震災で被災された方々、心を痛めた方々に送ります。

くずし字認識(その6) ~阿倍仲麻呂の和歌の解析~


 今回は、「くずし字認識(その6) ~阿倍仲麻呂の和歌の解析~」です。

 くずし字とは、「古典籍や古文書などで使われている文字のうち、楷書の点画を省略した手書き文字と、手書き文字をもとにした版本の文字」のことです。
 詳細は、こちらをご覧ください。
  https://www.nijl.ac.jp/pages/event/seminar/images/H26-kotenseki03.pdf

 くずし字認識とは、コンピュータを使って画像からくずし字を認識する技術です。
 OCR(Optical character recognition)技術が使われます。
 詳細は、こちらをご覧ください。
  https://ja.wikipedia.org/wiki/%E5%85%89%E5%AD%A6%E6%96%87%E5%AD%97%E8%AA%8D%E8%AD%98

 古典籍や古文書で使われる、くずし字の認識では、既存のOCRと同様な解析プロセスを用いることが想定されます。
 既存のOCRは以下のプロセスに従って解析されます。
  1:画像作成(書類をスキャナーでスキャン、カメラで撮影など)
  2:画像の前処理(コントラストや濃度調整、ノイズ除去、二値化など)
  3:レイアウト認識(文字領域や図形領域などの配置を認識)
  4:文字画像切り出し(文字領域から一つひとつの文字画像を切り出す)
  5:文字認識(文字画像から文字を推定)
  6:言語処理(文字認識結果の正しさを評価)
  7:文字データ化(解析結果を統合して文字データを出力)
 詳細は、こちらの記事をご参照ください。
  https://codezine.jp/article/detail/6607

 

 今回は、阿倍仲麻呂の和歌の解析について書きます。

 阿倍仲麻呂の百人一首の和歌の平仮名全てを解析してみます。
 実験には、前々回Kuzushiji-49を使って学習したモデルを使用します。
 Kuzushiji-49は、人文学オープンデータ共同利用センターが作成したデータセットです。
 特徴は以下のとおりです。
  1~9までの10クラス分類の手書き数字データセットMNISTと同じグレイスケース画像で、画像サイズ、ファイルフォーマットが同じ
  MNISTと異なる点は、平仮名のくずし字49個のクラス分類という点
  クリエイティブコモンズライセンス:『KMNISTデータセット』(CODH作成) 『日本古典籍くずし字データセット』(国文研ほか所蔵)を翻案 doi:10.20676/00000341 
 詳細は、こちらをご参照ください。
  http://codh.rois.ac.jp/kmnist/
 Kuzushiji-49は、こちらのGitHubのリンク先からダウンロードできます。
  https://github.com/rois-codh/kmnist
 Kuzushiji-49については、"Deep Learning for Classical Japanese Literature"というタイトルで、人文学オープンデータ共同利用センターなどの研究者が論文を発表しています。
  https://arxiv.org/pdf/1812.01718.pdf

 今回実験に使う画像は、『日本古典籍データセット』(国文学研究資料館等所蔵)の古今和歌集(国文研書誌ID:200003204)の阿倍仲麻呂の和歌です。
 百人一首にも入っている和歌です。
 『天の原 ふりさけ見れば 春日なる  三笠の山に 出でし月かも』
 黄色で囲んだ部分を解析します。
 下の画像では、以下の漢字と平仮名が使われています。
 『あまの原 ふりさけみれは かすかなる  みかさの山に 出し月かも』
 

 漢字を除いて、平仮名を文字認識した結果は、下の画像のとおりです。
 

 表示の意味は以下のとおりです。
  ans:正解(answer)のラベル
  pred:予測(prediction)のラベル
  prob:モデルが予測した確率(probability)
 ラベル番号と平仮名の対応関係は以下のとおりです。
label_dict = {'0': 'あ', '1': 'い', '2': 'う', '3': 'え', '4': 'お', '5': 'か', \
'6': 'き', '7': 'く', '8': 'け', '9': 'こ', '10': 'さ', '11': 'し', \
'12': 'す', '13': 'せ', '14': 'そ', '15': 'た', '16': 'ち', \
'17': 'つ', '18': 'て', '19': 'と', '20': 'な', '21': 'に', \
'22': 'ぬ', '23': 'ね', '24': 'の', '25': 'は', '26': 'ひ', \
'27': 'ふ', '28': 'へ', '29': 'ほ', '30': 'ま', '31': 'み', \
'32': 'む', '33': 'め', '34': 'も', '35': 'や', '36': 'ゆ', \
'37': 'よ', '38': 'ら', '39': 'り', '40': 'る', '41': 'れ', \
'42': 'ろ', '43': 'わ', '44': 'ゐ', '45': 'ゑ', '46': 'を', \
'47': 'ん', '48': 'ゝ'}
  ※ '0' = 'あ'、 '1' = 'い'、...、'48' = 'ゝ' の意味です。

 正答率は、約87%(23問中20問正解)でした。
 前々回紹介したKuzushiji-49を使って学習したモデルの正答率約93%と比べると、やや低めでした。
 画像の前処理の仕方の可能性や、問題数が少ないので評価バラツキの可能性がありますが、現時点では原因不明です。
 
 きっちり一文字ずつ画像を切り出すことができて、平仮名に限定すれば、そこそこ分類できると感じました。
 少なくとも、私以上にくずし字を分類できました。



 次回は、KMNISTデータセット(機械学習用くずし字データセット)のKuzushiji-Kanjiについて触れます。


スポンサーサイト



テーマ:プログラミング - ジャンル:コンピュータ

くずし字認識(その5) ~画像の前処理~


 今回は、「くずし字認識(その5) ~画像の前処理~」です。

 くずし字とは、「古典籍や古文書などで使われている文字のうち、楷書の点画を省略した手書き文字と、手書き文字をもとにした版本の文字」のことです。
 詳細は、こちらをご覧ください。
  https://www.nijl.ac.jp/pages/event/seminar/images/H26-kotenseki03.pdf

 くずし字認識とは、コンピュータを使って画像からくずし字を認識する技術です。
 OCR(Optical character recognition)技術が使われます。
 詳細は、こちらをご覧ください。
  https://ja.wikipedia.org/wiki/%E5%85%89%E5%AD%A6%E6%96%87%E5%AD%97%E8%AA%8D%E8%AD%98

 古典籍や古文書で使われる、くずし字の認識では、既存のOCRと同様な解析プロセスを用いることが想定されます。
 既存のOCRは以下のプロセスに従って解析されます。
  1:画像作成(書類をスキャナーでスキャン、カメラで撮影など)
  2:画像の前処理(コントラストや濃度調整、ノイズ除去、二値化など)
  3:レイアウト認識(文字領域や図形領域などの配置を認識)
  4:文字画像切り出し(文字領域から一つひとつの文字画像を切り出す)
  5:文字認識(文字画像から文字を推定)
  6:言語処理(文字認識結果の正しさを評価)
  7:文字データ化(解析結果を統合して文字データを出力)
 詳細は、こちらの記事をご参照ください。
  https://codezine.jp/article/detail/6607

 

 今回は、画像の前処理について書きます。

 画像の前処理方法によって、文字認識の正答率がどのくらい変わるか実験してみます。
 実験には、前回Kuzushiji-49を使って学習したモデルを使用します。
 Kuzushiji-49は、人文学オープンデータ共同利用センターが作成したデータセットです。
 特徴は以下のとおりです。
  1~9までの10クラス分類の手書き数字データセットMNISTと同じグレイスケース画像で、画像サイズ、ファイルフォーマットが同じ
  MNISTと異なる点は、平仮名のくずし字49個のクラス分類という点
  クリエイティブコモンズライセンス:『KMNISTデータセット』(CODH作成) 『日本古典籍くずし字データセット』(国文研ほか所蔵)を翻案 doi:10.20676/00000341 
 詳細は、こちらをご参照ください。
  http://codh.rois.ac.jp/kmnist/
 Kuzushiji-49は、こちらのGitHubのリンク先からダウンロードできます。
  https://github.com/rois-codh/kmnist
 Kuzushiji-49については、"Deep Learning for Classical Japanese Literature"というタイトルで、人文学オープンデータ共同利用センターなどの研究者が論文を発表しています。
  https://arxiv.org/pdf/1812.01718.pdf

 今回実験に使う画像は、『日本古典籍データセット』(国文学研究資料館等所蔵)の古今和歌集(国文研書誌ID:200003204)の阿倍仲麻呂の和歌です。
 百人一首にも入っている和歌です。
 『天の原 ふりさけ見れば 春日なる  三笠の山に 出でし月かも』
 黄色で囲んだ部分はその中の「ふりさけ」に対応する部分です。
 

 文字認識する際には、綺麗な文字画像データが望ましく、前処理で裏写り部分や背景のノイズを除去する必要があります。
 「ふりさけ」の各文字について、前処理条件を変えて、Kuzushiji-49を使って学習したモデルで分類してみました。
 下の画像の前処理条件は以下のとおりです。
  ・1行目: グレイ画像変換のみ
  ・2行目: グレイ画像変換 + コントラスト弱
  ・3行目: グレイ画像変換 + コントラスト中
  ・4行目: グレイ画像変換 + コントラスト強
  ・5行目: グレイ画像変換 + コントラスト最強
 

 表示の意味は以下のとおりです。
  ans:正解(answer)のラベル
  pred:予測(prediction)のラベル
  prob:モデルが予測した確率(probability)
 ラベル番号と平仮名の対応関係は以下のとおりです。
label_dict = {'0': 'あ', '1': 'い', '2': 'う', '3': 'え', '4': 'お', '5': 'か', \
'6': 'き', '7': 'く', '8': 'け', '9': 'こ', '10': 'さ', '11': 'し', \
'12': 'す', '13': 'せ', '14': 'そ', '15': 'た', '16': 'ち', \
'17': 'つ', '18': 'て', '19': 'と', '20': 'な', '21': 'に', \
'22': 'ぬ', '23': 'ね', '24': 'の', '25': 'は', '26': 'ひ', \
'27': 'ふ', '28': 'へ', '29': 'ほ', '30': 'ま', '31': 'み', \
'32': 'む', '33': 'め', '34': 'も', '35': 'や', '36': 'ゆ', \
'37': 'よ', '38': 'ら', '39': 'り', '40': 'る', '41': 'れ', \
'42': 'ろ', '43': 'わ', '44': 'ゐ', '45': 'ゑ', '46': 'を', \
'47': 'ん', '48': 'ゝ'}
  ※ '0' = 'あ'、 '1' = 'い'、...、'48' = 'ゝ' の意味です。

 1行目の「グレイ画像変換のみ」では、全ての予測は合っていましたが、確率が低めでした。
 2行目の「グレイ画像変換+コントラスト弱」では、背景にノイズが強く残っていて、一つ予測が外れました。 
 3行目以降のコントラストが一定以上の条件では、全ての予測が合っていて、確率が高めでした。
 この結果から、二つのことが言えると思います。
  ・グレイ画像に変換した後で、強めのコントラスト調整が必要
  ・背景に少しくらいノイズがあったり、他の文字の一部が入っていても精度よく分類可能


 次回は、阿倍仲麻呂の和歌の全ての文字(漢字を除く)について、くずし字認識をやってみます。


テーマ:プログラミング - ジャンル:コンピュータ

くずし字認識(その4) ~Kuzushiji-49の機械学習~


 今回は、「くずし字認識(その4) ~Kuzushiji-49の機械学習~」です。

 くずし字とは、「古典籍や古文書などで使われている文字のうち、楷書の点画を省略した手書き文字と、手書き文字をもとにした版本の文字」のことです。
 詳細は、こちらをご覧ください。
  https://www.nijl.ac.jp/pages/event/seminar/images/H26-kotenseki03.pdf

 くずし字認識とは、コンピュータを使って画像からくずし字を認識する技術です。
 OCR(Optical character recognition)技術が使われます。
 詳細は、こちらをご覧ください。
  https://ja.wikipedia.org/wiki/%E5%85%89%E5%AD%A6%E6%96%87%E5%AD%97%E8%AA%8D%E8%AD%98

 古典籍や古文書で使われる、くずし字の認識では、既存のOCRと同様な解析プロセスを用いることが想定されます。
 既存のOCRは以下のプロセスに従って解析されます。
  1:画像作成(書類をスキャナーでスキャン、カメラで撮影など)
  2:画像の前処理(コントラストや濃度調整、ノイズ除去、二値化など)
  3:レイアウト認識(文字領域や図形領域などの配置を認識)
  4:文字画像切り出し(文字領域から一つひとつの文字画像を切り出す)
  5:文字認識(文字画像から文字を推定)
  6:言語処理(文字認識結果の正しさを評価)
  7:文字データ化(解析結果を統合して文字データを出力)
 詳細は、こちらの記事をご参照ください。
  https://codezine.jp/article/detail/6607

 

 今回は、Kuzushiji-49の機械学習について書きます。

 Kuzushiji-49は、人文学オープンデータ共同利用センターが作成したデータセットです。
 特徴は以下のとおりです。
  1~9までの10クラス分類の手書き数字データセットMNISTと同じグレイスケールの画像で、画像サイズ、ファイルフォーマットが同じ
  MNISTと異なる点は、平仮名のくずし字49個のクラス分類という点
  クリエイティブコモンズライセンス:『KMNISTデータセット』(CODH作成) 『日本古典籍くずし字データセット』(国文研ほか所蔵)を翻案 doi:10.20676/00000341 
 詳細は、こちらをご参照ください。
  http://codh.rois.ac.jp/kmnist/
 Kuzushiji-49は、こちらのGitHubのリンク先からダウンロードできます。
  https://github.com/rois-codh/kmnist
 Kuzushiji-49については、"Deep Learning for Classical Japanese Literature"というタイトルで、人文学オープンデータ共同利用センターなどの研究者が論文を発表しています。
  https://arxiv.org/pdf/1812.01718.pdf



 Kuzushiji-49の画像の例を表示します。
 左上から49種類の平仮名を、次の配置で表示しています。
あ い う え お
か き く け こ
さ し す せ そ
た ち つ て と
な に ぬ ね の
は ひ ふ へ ほ
ま み む め も
や ゆ よ ら り
る れ ろ わ ゐ
ゑ を ん ゝ

 やはり、ところどころ読めない文字がありました。



 機械学習用のスクリプトには、TensorFlowのCNNのチュートリアルを流用しました。
 Kuzushiji-49データ読み込みの部分、クラス数を49に変更した部分、学習後のデータ予測部分を書き換えました。
 CNNレイヤー構成は以下のとおりです。
 Building the CNN MNIST Classifier
  1:Convolutional Layer #1: Applies 32 5x5 filters (extracting 5x5-pixel subregions), with ReLU activation function
  2:Pooling Layer #1: Performs max pooling with a 2x2 filter and stride of 2 (which specifies that pooled regions do not overlap)
  3:Convolutional Layer #2: Applies 64 5x5 filters, with ReLU activation function
  4:Pooling Layer #2: Again, performs max pooling with a 2x2 filter and stride of 2
  5:Dense Layer #1: 1,024 neurons, with dropout regularization rate of 0.4 (probability of 0.4 that any given element will be dropped during training)
  6:Dense Layer #2 (Logits Layer): 49 neurons, one for each digit target class (0–48).
 詳細は、こちらをご参照ください。
  https://www.tensorflow.org/tutorials/estimators/cnn

 
 このCNNモデルを使って学習した結果、正答率は「0.9337」でした。
 本論文の"Keras Simple CNN Benchmark"の正答率が「0.8925」なので、論文よりも良い結果が得られました。
 ただし、原因は不明です。

 学習したモデルでクラス予測した例を挙げます。
 表示の意味は以下のとおりです。
  ans: 正解(answer)のラベル
  pred: 予測(prediction)のラベル
  prob: モデルが予測した確率(probability)
 ラベル番号と平仮名の対応関係は以下のとおりです。
label_dict = {'0': 'あ',  '1': 'い',  '2': 'う',  '3': 'え',  '4': 'お',  '5': 'か', \
'6': 'き',  '7': 'く',  8': 'け',  '9': 'こ',  '10': 'さ',  '11': 'し', \
'12': 'す',  '13': 'せ',  '14': 'そ',  '15': 'た',  '16': 'ち', \
'17': 'つ',  '18': 'て',  '19': 'と',  '20': 'な',  21': 'に', \
'22': 'ぬ', '23': 'ね',  '24': 'の',  '25': 'は',  '26': 'ひ', \
'27': 'ふ', '28': 'へ',  '29': 'ほ',  '30': 'ま',  '31': 'み', \
'32': 'む',  '33': 'め',  '34': 'も', '35': 'や',  '36': 'ゆ', \
'37': 'よ',  '38': 'ら',  '39': 'り',  '40': 'る',  '41': 'れ', \
'42': 'ろ',  '43': 'わ',  '44': 'ゐ',  '45': 'ゑ',  '46': 'を', \
'47': 'ん', '48': 'ゝ'}
  ※ '0' = 'あ'、 '1' = 'い'、...、'48' = 'ゝ' の意味です。

 下の例では、一番下の行の、左から二番目の画像のみモデルの予測が間違っていました。
 49個もクラスがある中で、93%の確率で当てられるのは結構すごいと感じました。



 次回は、日本古典籍データセットを使って、くずし字認識を手作業でやってみます。


テーマ:プログラミング - ジャンル:コンピュータ

くずし字認識(その3) ~Kuzushiji-MNISTの機械学習~


 今回は、「くずし字認識(その3) ~Kuzushiji-MNISTの機械学習~」です。

 くずし字とは、「古典籍や古文書などで使われている文字のうち、楷書の点画を省略した手書き文字と、手書き文字をもとにした版本の文字」のことです。
 詳細は、こちらをご覧ください。
  https://www.nijl.ac.jp/pages/event/seminar/images/H26-kotenseki03.pdf

 くずし字認識とは、コンピュータを使って画像からくずし字を認識する技術です。
 OCR(Optical character recognition)技術が使われます。
 詳細は、こちらをご覧ください。
  https://ja.wikipedia.org/wiki/%E5%85%89%E5%AD%A6%E6%96%87%E5%AD%97%E8%AA%8D%E8%AD%98

 古典籍や古文書で使われる、くずし字の認識では、既存のOCRと同様な解析プロセスを用いることが想定されます。
 既存のOCRは以下のプロセスに従って解析されます。
  1:画像作成(書類をスキャナーでスキャン、カメラで撮影など)
  2:画像の前処理(コントラストや濃度調整、ノイズ除去、二値化など)
  3:レイアウト認識(文字領域や図形領域などの配置を認識)
  4:文字画像切り出し(文字領域から一つひとつの文字画像を切り出す)
  5:文字認識(文字画像から文字を推定)
  6:言語処理(文字認識結果の正しさを評価)
  7:文字データ化(解析結果を統合して文字データを出力)
 詳細は、こちらの記事をご参照ください。
  https://codezine.jp/article/detail/6607

 

 今回は、Kuzushiji-MNISTの機械学習について書きます。

 Kuzushiji-MNISTは、人文学オープンデータ共同利用センターが作成したデータセットです。
 特徴は以下のとおりです。
  1~9までの10クラス分類の手書き数字データセットMNISTと同じグレイスケールの画像で、画像サイズ、ファイルフォーマット、ファイル数も同じ
  MNISTと異なる点は、平仮名のくずし字10個のクラス分類という点
  クリエイティブコモンズライセンス:『KMNISTデータセット』(CODH作成) 『日本古典籍くずし字データセット』(国文研ほか所蔵)を翻案 doi:10.20676/00000341 
 詳細は、こちらをご参照ください。
  http://codh.rois.ac.jp/kmnist/
 Kuzushiji-MNISTは、こちらのGitHubのリンク先からダウンロードできます。
  https://github.com/rois-codh/kmnist
 Kuzushiji-MNISTについては、"Deep Learning for Classical Japanese Literature"というタイトルで、人文学オープンデータ共同利用センターなどの研究者が論文を発表しています。
  https://arxiv.org/pdf/1812.01718.pdf



 Kuzushiji-MNISTの画像の例を表示します。
 上から下に「お、き、す、つ、な、は、ま、や、れ、を」の順に、横に10文字ずつ並べて表示しています。
 本当に、色々なくずし方があることが分かります。
   


 機械学習用のスクリプトには、TensorFlowのCNNのチュートリアルを流用しました。
 Kuzushiji-MNISTデータ読み込みの部分と、学習後のデータ予測部分だけ書き換えました。
 CNNレイヤー構成は以下のとおりです。
 Building the CNN MNIST Classifier
  1:Convolutional Layer #1: Applies 32 5x5 filters (extracting 5x5-pixel subregions), with ReLU activation function
  2:Pooling Layer #1: Performs max pooling with a 2x2 filter and stride of 2 (which specifies that pooled regions do not overlap)
  3:Convolutional Layer #2: Applies 64 5x5 filters, with ReLU activation function
  4:Pooling Layer #2: Again, performs max pooling with a 2x2 filter and stride of 2
  5:Dense Layer #1: 1,024 neurons, with dropout regularization rate of 0.4 (probability of 0.4 that any given element will be dropped during training)
  6:Dense Layer #2 (Logits Layer): 10 neurons, one for each digit target class (0–9).
 詳細は、こちらをご参照ください。
  https://www.tensorflow.org/tutorials/estimators/cnn

 
 このCNNモデルを使って学習した結果、正答率は「0.9554」でした。
 本論文の"Keras Simple CNN Benchmark"の正答率が「0.9512」なので、ほぼ同等の結果が得られました。

 学習したモデルでクラス予測した例を挙げます。
 表示の意味は以下のとおりです。
  ans:正解(answer)のラベル
  pred:予測(prediction)のラベル
  prob:モデルが予測した確率(probability)
 ラベル番号と平仮名の対応関係は以下のとおりです。
  '0' = 'お'
  '1' = 'き'
  '2' = 'す'
  '3' = 'つ'
  '4' = 'な'
  '5' = 'は'
  '6' = 'ま'
  '7' = 'や'
  '8' = 'れ'
  '9' = 'を'
 下の例では、左上の画像のみモデルの予測が間違っていました。
 この他にも間違っている画像を確認しましたが、人間でも判断に迷うものでした。
 


 次回は、平仮名全てを含んでいるデータセット"Kuzushiji-49"を機械学習してみます。


テーマ:プログラミング - ジャンル:コンピュータ

くずし字認識(その2) ~光学文字認識OCRについて~


 今回は、「くずし字認識(その2) ~光学文字認識OCRについて~」です。

 くずし字とは、「古典籍や古文書などで使われている文字のうち、楷書の点画を省略した手書き文字と、手書き文字をもとにした版本の文字」のことです。
 詳細は、こちらをご覧ください。
  https://www.nijl.ac.jp/pages/event/seminar/images/H26-kotenseki03.pdf

 くずし字認識とは、コンピュータを使って画像からくずし字を認識する技術です。
 OCR(Optical character recognition)技術が使われます。
 詳細は、こちらをご覧ください。
  https://ja.wikipedia.org/wiki/%E5%85%89%E5%AD%A6%E6%96%87%E5%AD%97%E8%AA%8D%E8%AD%98


 
 今回は、光学文字認識OCRについて書きます。

 ここ数年でOCR技術が一気に向上しました。
 特に、従来、なかなか解析精度が上がらなかった手書き文字の認識については、実用レベルに到達しているようです。
 これに伴い、ビジネスの現場にも着々と導入が進んでいるようです。
  https://www.tegaki.ai/ 
  https://inside.ai/dx-suite/intelligent-ocr/



 古典籍や古文書で使われる、くずし字の認識でも、既存のOCRと同様な解析プロセスを用いることが想定されます。
 既存のOCRは以下のプロセスに従って解析されます。
  1:画像作成(書類をスキャナーでスキャン、カメラで撮影など)
  2:画像の前処理(コントラストや濃度調整、ノイズ除去、二値化など)
  3:レイアウト認識(文字領域や図形領域などの配置を認識)
  4:文字画像切り出し(文字領域から一つひとつの文字画像を切り出す)
  5:文字認識(文字画像から文字を推定)
  6:言語処理(文字認識結果の正しさを評価)
  7:文字データ化(解析結果を統合して文字データを出力)
 詳細は、こちらの記事をご参照ください。
  https://codezine.jp/article/detail/6607

 

 次に、くずし字認識に既存のOCR技術を適用した場合の難しい点を挙げます。

・難しさ その1
 「画像の前処理」において、古典籍や古文書の場合、裏写りが著しい点です。
 『日本古典籍データセット』(国文学研究資料館等所蔵)の古今和歌集(国文研書誌ID:200003204)を例に説明します。
 下の画像は、古今和歌集の阿倍仲麻呂の和歌に関する一節ですが、結構裏写りしています。
 文字認識する際には、奇麗な文字画像データが望ましいので、前処理で裏写り部分を除去する必要があります。
 


・難しさ その2
 「レイアウト認識」において、古典籍や古文書の場合、絵と文が入り混じっており、配置も自由な点です。
 鶴図下絵和歌巻(絵が俵屋宗達筆、書が本阿弥光悦筆)を例に見ると、文字は画面の中に自由に配置されています。
 しかも、絵と文字が重なっている部分も多々あります。
 この場合、文字を際立たせるために前処理する必要がありますが、絵と文字の重なり方に応じて処理を変更する必要があります。
 また、配置が自由なので、文の順番も認識する必要があります。
  ※画像は京都国立博物館のウェブサイト(https://www.kyohaku.go.jp/jp/syuzou/meihin/kinsei/item02.html)から引用しました。
  


・難しさ その3
 「文字画像切り出し」において、くずし字は文字と文字がつながっているケースが多い点です。
 Kaggleのくずし字の文字画像切り出しに関する説明図を引用します。
  https://www.kaggle.com/c/kuzushiji-recognition/overview/about-kuzushiji
 下の画像のように、文字がつながっていて、なおかつ文字の配置が自由なために、文字画像を切り出す際に複数の文字に重複する領域が発生します。
 つまり隣の文字の一部が入ってきてしまうケースが多々あります。
 このような場合に、どのように処理すれば解析精度が高くなるかアルゴリズムを考える必要があります。
  


・難しさ その4
 「文字認識」において、くずし字には、くずし方に自由度がある点と変体仮名がある点です。
 国文学研究資料館の説明を引用します。
  https://www.nijl.ac.jp/koten/kuzushiji/post.html
 この説明には、漢字から平仮名に複数の段階を経てくずす例が挙げられていたり、一つの平仮名に対して複数の漢字を基にした変体仮名が割り当てられている例が挙げられています。
 このように、一つの文字分類に対して、多種多様な形が割り当てられています。
   


 他にも難しい点があると思いますが、直感的には、画像認識だけでくずし字認識をする場合、一定以上の精度を得ることは難しいように感じました。
 「言語処理」をうまく使って、いかに文字画像から文字分類を推定できるかが鍵になりそうな気がします。
 そのような考えの論文があるので、ご参考までにリンクを載せます。
  https://www.anlp.jp/proceedings/annual_meeting/2013/pdf_dir/B1-5.pdf


 次回以降は、実際にくずし字認識をしたらどういう処理をすることになるか調べてみます。


テーマ:プログラミング - ジャンル:コンピュータ