令和4年度NDLOCR追加開発事業及び同事業成果に対する改善作業
国立国会図書館(以下「当館」といいます。)は、令和4年度に、令和3年度補正予算(第1号)により、OCR処理プログラムの研究開発事業(以下「令和4年度NDLOCR追加開発事業」といいます。)を外部委託にて実施しました(委託業者:株式会社モルフォAIソリューションズ)。これは、全文検索用に令和3年度に開発したOCR処理プログラム(NDLOCR ver.1)に対して、視覚障害者等の読み上げ用途にも利用できるように追加研究開発を行ったもので、成果物としてNDLOCR 2.0を開発しました。
このページでは、上記の令和4年度NDLOCR追加開発事業(NDLOCR ver.2.0の開発)について紹介するとともに、令和5年4~6月に当館がNDLOCR ver.2.0に対して行った改善作業(NDLOCR ver.2.1の開発)についても合わせて紹介します。
1. 令和4年度NDLOCR追加開発事業の経緯
令和3年度に実施したNDLOCR ver.1の開発の経緯については、令和3年度OCR処理プログラム研究開発事業をご覧ください。
令和4年度は、全文検索用途のテキスト化のために開発したNDLOCR ver.1に対して、視覚障害者等の読み上げ用テキストデータの作成を可能にする機能追加のため、行単位で認識した文字列の読み順の整序機能等に関する研究開発を行いました。合わせて、当館が今後デジタル化及びテキスト化をする資料の出版年代を考慮し、特に1960年代以降の図書・雑誌資料に対する文字認識性能の改善も図りました。
2. 令和4年度NDLOCR追加開発事業の作業内容
令和4年度NDLOCR追加開発事業では、1960年以降に刊行された図書及び雑誌のデジタル化資料を用いて、データセットを作成しました。
データセット作成に当たっては、令和3年度OCR処理プログラム研究開発事業において定めたデータセットの仕様に対し、行単位で認識した文字列の読み順の整序情報や、レイアウト認識性能をより高めるための広告領域のアノテーション等の追加を行いました。
また、次表のとおり、読み上げ難易度別に4つのレベルに分けて学習用と評価用のデータセットを作成しました。学習用データセットを利用して追加開発を行い、評価用データセットによって性能評価を行いました。性能評価については次項で説明します。
レベル | 内容の目安 | 学習用データセット (画像数) |
評価用データセット (画像数) |
---|---|---|---|
レベル1 | 本文が1ブロックで構成される単純な1段組のもの | 3,045 | 1,200 |
レベル2 | 本文が2ブロック以上で構成され、段抜きを含まない単純な多段組のもの | 1,151 | 351 |
レベル3 | 本文が2ブロック以上で構成され、「段抜きを含む多段組」「1段組と多段組が混在」「図版に対する回り込みが発生している」 のいずれかに該当するもの |
5,405 | 1,261 |
レベル4 | 本文が2ブロック以上で構成され、見出しと本文が複雑に配置に配置されていて人間が読んでも読み順序の同定が難しいもの | 1,202 | 201 |
※「ブロック」とは、ひとまとまりになった本文領域を指し、概ね段組の段数と一致する概念です。例えば、段抜きのある挿絵や見出しによって段組が分断される場合には、ブロック数が増加します。 開発作業の詳細な内容については、次の資料をご覧ください。
3. 令和4年度NDLOCR追加開発事業に対して設定した性能評価
視覚障害者等の読み上げ用テキストデータの作成に利用する目的においては、次に示す2つの観点から評価することが重要です。
OCR処理プログラムの出力文字列に対して抜け・漏れ・誤りの少なさを表す「認識結果の正確性」
読み取った文字列を正しい順序につなぎ合わせることができたかを表す「読み順整序の正確性」
そこで、本事業の成果物であるNDLOCR ver.2.0に対しては、文字認識の正確性を評価する「行内スコア」と、読み順整序の正確性を評価する「行間スコア」の2つの指標を定めました。その上で、評価用データセットを用いて両方を測定することで、文字認識性能の実用的な定量評価を行いました。
評価用データセットのレベル1からレベル3までの各スコアに対して、目標値を設定しました。レベル4については、紙面のレイアウトが特に多様で定量的な目標値を定めることが困難であることから目標値を設定せず、開発期間中の令和4年10月時点の実績値と最終的な達成値の比較を行いました。
3.1.行内スコアによる文字認識性能の評価と評価結果
文字認識性能を行単位で評価する指標として、「行内スコア」は、正解文字列と予測文字列のレーベンシュタイン距離(Levenshtein distance)を正解文字列の長さで割った値で表されるものと定義しました。
行内スコアの集計は、見開きを分割した片ページ単位で行います。評価対象とするページに正解文字列がN行存在するとき、ページ内の行内スコアの合計をNで割った値($score_{inline}$)の計算式は次のとおりです。
$$line_{true_k}=\{k行目の正解文字列\}$$
$$line_{pred_k}=\{k行目の予測文字列\}$$
$$score_{inline}=\dfrac{\sum_{k=1}^{N}(\dfrac{Levenshtein\_distance(line_{true_k},line_{pred_k})}{length(line_{true_k})})}{N}$$
この行内スコアは、0から1までの範囲を取る値で、0に近づくほど優れている(正解に近い予測ができる)ことを表します。
上式において、$length(line_{true_k})$はk行目の正解文字列の長さを表します。
なお、行内スコアにおいては、3.2.で説明する「行間スコア」指標による読み順の評価とは独立して評価を行うため、予測された各行の順序を無視し、1つの正解矩形に対して最も重なりの大きな矩形を評価対象としました。 従って、ここではkの順序は意味を持ちません。
NDLOCR ver.2.0の評価結果は次表のとおりです。
レベル | 目標スコア | 最終スコア |
---|---|---|
レベル1 | 0.01 | 0.0024 |
レベル2 | 0.01 | 0.0034 |
レベル3 | 0.015 | 0.015 |
レベル4 | - (参考:令和4年10月時点の実績値0.14) | 0.075 |
※評価用データセットのレベルごとに片ページ単位での行内スコアの中央値を算出し、最終スコアとしています。
3.2.行間スコアによる読み順整序性能の評価と評価結果
読み順整序の性能を評価する指標として、「行間スコア」は、行単位で認識した文字列の正解順序と予測順序のレーベンシュタイン距離を正解順序の長さ(個数)で割った値で表されるものと定義しました。
行間スコアの算出は、見開きを分割した片ページ単位で行います。評価対象とするページに正解となる本文行がN個存在するとき、行間スコア(scoreorder)の計算式は次のとおりです。
$$order_{true}=\{正解順序\}$$
$$order_{pred}=\{予測順序\}$$
$$score_{order}=\dfrac{Levenshtein\_distance(order_{true},order_{pred})}{N}$$
この行間スコアは、0から1までの範囲を取る値で、0に近づくほど優れている(正解に近い予測ができる)ことを表します。 NDLOCR ver.2.0の評価結果は次表のとおりです。
レベル | 目標スコア | 最終スコア |
---|---|---|
レベル1 | 0 | 0 |
レベル2 | 0 | 0 |
レベル3 | 0.1 | 0.0725 |
レベル4 | - (参考:令和4年10月時点の実績値0.37) | 0.2111 |
※評価用データセットのレベルごとに片ページ単位での行内スコアの中央値を算出し、最終スコアとしています。
3.3. 処理速度
次に示す当館サーバ環境において、ファイル入出力を除く1ページ当たりの処理時間は、2.5秒程度でした。
OS: Ubuntu 18.04LTS
Intel(R) Xeon(R) W-3245 CPU @ 3.20GHz 1基
GPU:NVIDIA Geforce RTX 2080Ti 1基
4. 令和4年度NDLOCR追加開発事業成果に対する改善作業
4.1. 改善作業の経緯と作業内容
令和5年4月~6月、当館は、令和4年度NDLOCR追加開発事業の成果物であるNDLOCR ver.2.0に対し、更なる性能向上に向けて以下2点の改善作業を実施しました(以下、改善後の成果物を「NDLOCR ver.2.1」といいます。)。
4.1.1. 1960年以前の資料に対するレイアウト認識性能の改善
当館が今後デジタル化及びテキスト化をしていく資料の出版年代を踏まえ、令和4年度NDLOCR追加開発事業においては、1960年以前に刊行された古い図書・雑誌資料の認識性能は改善対象に含めなくてよいこととしていました。
これは、開発効率を高め、追加機能の開発を集中的に行うための要件でしたが、利用者の視点に立つと、どの年代に出版された資料においてもNDLOCR ver.1よりも概ね優れた文字認識性能を有することが当然に期待されます。
後述(「5. NDLOCR ver.1との文字認識性能比較」)のとおり、NDLOCR 2.0の文字認識精度の値は、NDLOCR ver.1よりも全てが上回る結果にはなりませんでした。特に1900年以前の図書・雑誌資料において大きく下回っています。
令和4年度NDLOCR追加開発事業では、文字を認識する行認識モデルの開発において、令和4年度に作成したデータセットだけでなく、令和3年度OCR処理プログラム研究開発事業で作成した、1960年以前に刊行された古い図書・雑誌資料を含むデータセットも含めて学習を行いました。その結果、NDLOCR ver.2.0は、令和3年度成果物であるNDLOCR ver.1と同等以上の文字認識性能を有しています。 しかし、文字が書かれている箇所を検出するレイアウト認識モデルの開発においては、令和4年度のデータセット作成時に対応した新しいレイアウト要素の追加により、令和3年度作成時のデータセットとの互換性が失われたことから、学習において令和3年度のデータセットを利用しませんでした。
レイアウト認識モデルは、行認識モデルが読むべき文字領域を検出して絞り込む機能を担っているため、レイアウト認識モデルにおいて見逃されてしまった文字領域は、後段の行認識モデルの処理において読み取ることができません。このため、レイアウトを認識できなかった領域が多い資料の文字認識精度が下がる結果となりました。 以上から、当館は、レイアウト認識モデルに対し、1960年以前に刊行された古い図書・雑誌資料を用いた令和3年度のデータセットを用意して再学習を行うことにしました。 具体的に当館が実施した改善作業は、次の手順のとおりです。
- 令和3年度と令和4年度に共通するレイアウト要素に限定して、令和3年度のデータセットによるレイアウト認識モデルの事前学習を行う
- 事前学習済みのレイアウト認識モデルを令和4年度のデータセットで微調整(fine tuning)する
4.1.2. 読み順付与機能における広告領域と本文領域の出力の調整
全文検索時等の利便性向上の観点から、令和4年度NDLOCR追加開発事業では、資料に含まれる広告領域内の文字を読み取りできる機能の追加を行いました。 ただし、広告領域内の文字には、一般に装飾や特殊なレイアウト等があり、本文領域と比較して定量的な指標とその目標値の設定が困難でした。そこで、広告領域内の読み取り機能は、読み順を含めた定量評価の対象からは除くこととし、オプション機能として開発する方針としました。
このオプション機能を有効化した際、レイアウト認識結果が「本文領域」と「広告領域」の判定に迷った場合に特定の条件下で両方の情報を出力してしまうことがあり、テキストデータが重ねて出力される事象が確認されました。このため、当館は、レイアウト認識モデルが確信度を高く評価した方のレイアウトのみ残すよう調整を行いました。
この調整により、広告領域と判定された領域の読み取り結果をあえて除外する必要性がなくなったため、NDLOCR Ver.2.1として公開するソースコードにおいては、オプション機能としてではなく、広告領域の読み取り結果が存在する場合、広告領域を除外せず常に出力する仕様として提供することとしました。利用に当たって広告領域のテキストデータが不要の場合は、出力結果のxml形式のアノテーションを参照することで除外可能です。
4.2.行内スコアによる文字認識性能の評価結果
3.1と同様の行内スコアによる評価方法で、NDLOCR ver.2.1の文字認識性能を評価しました。
NDLOCR ver.2.1の評価結果は次表のとおりです。
レベル | 目標スコア | 最終スコア (NDLOCR ver.2.0) |
最終スコア (NDLOCR ver.2.1) |
---|---|---|---|
レベル1 | 0.01 | 0.0024 | 0.004 |
レベル2 | 0.01 | 0.0034 | 0.0049 |
レベル3 | 0.015 | 0.015 | 0.016 |
レベル4 | - (参考:令和4年10月時点の実績値0.14) | 0.075 | 0.0702 |
レベル3の行内スコアについては、令和4年度NDLOCR追加開発事業完了時点(NDLOCR ver.2.0)では目標値を達成していましたが、NDLOCR ver.2.1では目標値を0.001下回りました。ただし、性能はほぼ変わらないと考えます。それ以外のレベルの行内スコアはNDLOCR ver.2.1が上回っています。
4.3.行間スコアによる読み順整序性能の評価結果
3.2と同様の行間スコアによる評価方法で、NDLOCR ver.2.1の文字認識性能を評価しました。
NDLOCR ver.2.1の評価結果は次表のとおりです。
レベル | 目標スコア | 最終スコア (NDLOCR ver.2.0) |
最終スコア (NDLOCR ver.2.1) |
---|---|---|---|
レベル1 | 0 | 0 | 0 |
レベル2 | 0 | 0 | 0 |
レベル3 | 0.1 | 0.0556 | 0.0376 |
レベル4 | - (参考:令和4年10月時点の実績値0.37) | 0.2111 | 0.124 |
全てのレベルの行間スコアにおいて、令和4年度NDLOCR追加開発事業完了時点(NDLOCR ver.2.0)よりもNDLOCR ver.2.1が上回っています。
4.4. 処理速度
3.3に示した当館サーバ環境において、ファイル入出力を除く1ページ当たりの処理時間は、2.5秒程度でした。
5. NDLOCR ver.1との文字認識性能比較
NDLOCR ver.1の利用者が、ver.2.1への移行の必要性を検討するための判断材料を提供することを目的として、令和3年度OCR処理プログラム研究開発事業と同じ評価対象・評価方法によって、NDLOCR ver.1とNDLOCR ver.2の文字認識性能を比較しました。
5.1. 文字認識性能評価の対象とする資料
図書及び雑誌のうち出版年代が判明している資料を対象としました。
次の33区分に分けてそれぞれに目標値を設定しています。
図書(20区分):出版年代を1870年代から1960年代までの10年ごとに区切り、その中を日本十進分類法(NDC)に基づき、それぞれ理系(NDC4類~6類)、文系(それ以外のNDC分類)に区切った20区分
雑誌(13区分):出版年代を1870年代から1990年代までの10年ごとに区切った13区分
なお、当館が性能測定検査のために用意した全330画像について、画像中のJIS水準に含まれる漢字(「々」、「仝」及び「〇(漢数字の零)」等の非漢字は含まない。)のうちJIS第1水準及びJIS第2水準の割合は96.9%でした。
5.2. 評価方法
認識性能は、画像ごとに文字単位についてF値($F_{measure}$)を計算することで評価しました。
F値の定義は次のとおりとしています。
$$y_{true}=\{正解文字情報に含まれる文字の多重集合\}$$
$$y_{pred}=\{認識結果に含まれる文字の多重集合\}$$
$$Precision=\dfrac{|y_{pred} \cap y_{true}|}{|y_{pred}|},Recall=\dfrac{|y_{pred} \cap y_{true}|}{|y_{true}|}$$
としたとき
$$F_{measure}=\dfrac{2Recall*Precision}{Recall+Precision}$$
F値は0から1の範囲を取り、1に近づくほど高い認識性能を表します。
5.3. 文字認識性能の評価結果
性能測定検査のために当館が用意した330画像のデータセットで評価を行った結果を下表に示しています。
図書資料については、NDLOCR ver.2.1がNDLOCR ver.1の実績値を下回った区分が合計4区分ありましたが、1%を超えて下回った区分は1870年代及び1880年代刊行の理系図書の2区分のみでした。一方、雑誌資料についてはNDLOCR ver.1と比較して全体的に文字認識性能の顕著な向上が確認できました。
資料種別 | 出版年代 | カテゴリー | 令和3年度目標値 | NDLOCR ver.1 | NDLOCR ver.2.0 | NDLOCR ver.2.1 |
---|---|---|---|---|---|---|
図書 | 1870 | 文系 | 0.4 | 0.9147 | 0.8775 | 0.9214 |
図書 | 1870 | 理系 | 0.43 | 0.9174 | 0.8558 | 0.8867 |
図書 | 1880 | 文系 | 0.65 | 0.945 | 0.9507 | 0.9565 |
図書 | 1880 | 理系 | 0.54 | 0.9492 | 0.8879 | 0.9369 |
図書 | 1890 | 文系 | 0.73 | 0.9531 | 0.9611 | 0.971 |
図書 | 1890 | 理系 | 0.6 | 0.9257 | 0.8435 | 0.947 |
図書 | 1900 | 文系 | 0.79 | 0.9559 | 0.9787 | 0.9795 |
図書 | 1900 | 理系 | 0.77 | 0.9584 | 0.9637 | 0.9728 |
図書 | 1910 | 文系 | 0.81 | 0.952 | 0.9685 | 0.974 |
図書 | 1910 | 理系 | 0.83 | 0.938 | 0.9254 | 0.9531 |
図書 | 1920 | 文系 | 0.89 | 0.9641 | 0.965 | 0.9727 |
図書 | 1920 | 理系 | 0.89 | 0.9593 | 0.9535 | 0.9589 |
図書 | 1930 | 文系 | 0.91 | 0.9624 | 0.9599 | 0.9722 |
図書 | 1930 | 理系 | 0.89 | 0.9624 | 0.958 | 0.9783 |
図書 | 1940 | 文系 | 0.92 | 0.9647 | 0.9838 | 0.9852 |
図書 | 1940 | 理系 | 0.9 | 0.9607 | 0.951 | 0.9732 |
図書 | 1950 | 文系 | 0.94 | 0.9803 | 0.9807 | 0.9815 |
図書 | 1950 | 理系 | 0.94 | 0.9605 | 0.9639 | 0.9783 |
図書 | 1960 | 文系 | 0.97 | 0.9824 | 0.9855 | 0.9908 |
図書 | 1960 | 理系 | 0.97 | 0.9743 | 0.9731 | 0.9724 |
雑誌 | 1870 | - | 0.65 | 0.929 | 0.9184 | 0.9403 |
雑誌 | 1880 | - | 0.74 | 0.9411 | 0.9079 | 0.9599 |
雑誌 | 1890 | - | 0.78 | 0.9404 | 0.9344 | 0.9622 |
雑誌 | 1900 | - | 0.88 | 0.9525 | 0.9486 | 0.9767 |
雑誌 | 1910 | - | 0.84 | 0.9285 | 0.9098 | 0.9602 |
雑誌 | 1920 | - | 0.89 | 0.9514 | 0.9631 | 0.9676 |
雑誌 | 1930 | - | 0.91 | 0.9534 | 0.9719 | 0.9742 |
雑誌 | 1940 | - | 0.91 | 0.9626 | 0.9733 | 0.9811 |
雑誌 | 1950 | - | 0.91 | 0.9548 | 0.9684 | 0.9705 |
雑誌 | 1960 | - | 0.96 | 0.9846 | 0.9878 | 0.9883 |
雑誌 | 1970 | - | 0.96 | 0.9693 | 0.9814 | 0.9866 |
雑誌 | 1980 | - | 0.95 | 0.9605 | 0.9742 | 0.9827 |
雑誌 | 1990 | - | 0.96 | 0.9376 | 0.9683 | 0.9834 |
6. 成果物に関連する情報
6.1.成果物の公開
①OCR処理プログラム(NDLOCR ver.2)
令和3年度OCR処理プログラム研究開発事業(NDLOCR ver.1)と同様に、オープンソースとして当館が公開できるよう、必要な権利処理を行ってあります。
成果物の中で利用しているOSSのライブラリ等についても、寛容型OSS(MIT、BSD、Apache2等)のものを採用しているため、商用・非商用ともに自由な二次利用が可能です。
機能ごとに6つのリポジトリに分かれていますが、下記リポジトリの手順に従うことで、Dockerコンテナとして構築・利用することができます。
② OCRテキストの対応字種データ
NDLOCR ver.2の対応字種範囲を公開しています。
なお、NDLOCR ver.1開発時(令和3年度)からの変更はありません。
6.2. 当館による成果物の利用について
今回開発したOCR処理プログラム(NDLOCR ver.2.1)を利用して、令和3年以降当館が新たにデジタル化した資料からOCR全文テキストデータを作成します。
作成したOCR全文テキストデータは、国立国会図書館デジタルコレクションにおける全文検索対象に、順次追加して提供していく予定です。
また、OCR全文テキストデータは、視覚障害者等用データ送信サービスでも提供する予定です。