ホーム > データ(活用する) > 令和3年度OCR関連事業について > 2 令和3年度OCR処理プログラム研究開発

2 令和3年度OCR処理プログラム研究開発

令和3年度、国立国会図書館(以下、「当館」といいます。)は、令和2年度補正予算(第3号)により、これから当館がデジタル化する資料の全文テキストデータ作成に利用することを目的とした、機械学習可能なOCR処理プログラムの研究開発事業(以下、「OCR処理プログラム開発事業」といいます。)を株式会社モルフォAIソリューションズに委託して実施しました。

1. OCR処理プログラム開発事業の目的

当館の提供するデジタル化資料のほとんどはテキストデータを持たない画像データです。

昨今のOCR(光学的文字認識)処理技術の進展により、画像データからテキストデータを作成し、本文検索サービスとして提供することが可能となってきました。当館の提供する全てのデジタル化資料をOCR処理によってテキスト化し、デジタル化資料の中身に対する検索サービスを広く提供することは急務です。

令和2年までに当館がデジタル化した資料のOCRテキスト化については、令和3年度OCRテキスト化事業により全文テキストデータを入手しましたが、令和3年以降当館がデジタル化する資料の全文テキストデータを作成するためには、当館がデジタル化する資料群に適するよう機械学習技術等の最新技術を取り入れたOCR処理プログラムを当館が保有し、いつでも実行可能とする必要がありました。

そこで、当館の提供する資料の多様性を踏まえ、当館資料に最適化された認識性能と適切な処理速度を確保された、当館がオープンソースとして公開可能なOCR処理プログラムの研究開発事業を外部委託にて行いました。

2. OCR処理プログラム開発事業において当館が提供した資料

令和2年12月時点で当館が国立国会図書館デジタルコレクション上で提供を行っていた図書・雑誌等資料、約247万点(約2.2億画像)です。 この中で大部分を占める下記の図書及び雑誌をもとに開発を進めました。

コレクション名称 資料概数(点) 画像数
雑誌 1,320,000 72,462,853
図書 973,000 137,728,493
(合計) 2,293,000 210,191,346

3. OCR処理プログラム開発事業の大まかな流れ

OCR処理プログラム開発事業開始後、まず当館の提供するデジタル化資料(2に示した対象資料と同じ)を分析・加工してOCR学習用データセットを作成し、当館のデジタル化資料に最適化された高い品質でテキスト化できるよう、また出力されたテキストデータを構造化して扱えるようレイアウト認識について研究開発を行いました。

研究開発期間後半に性能検査日を設け、開発したOCR処理プログラムに対して当館が性能測定検査を行い、4.1.及び4.2.に示す2種類の性能指標の両方を満たし、かつ、4.3.に定める当館のサーバ環境における処理速度の性能要件を満たすことを確認しました。

また、上記の作業と並行して、テキストデータの構造化のため、レイアウト情報(見出し、著者名、ルビ、注釈、ノンブル、柱、本文、図表等)を自動付与する機械学習モデルの開発を行い、OCR処理時のレイアウト認識の際に付与しています。

作業内容の詳細については、次の資料をご覧ください。

4. OCR処理プログラム開発事業に対して設定した性能指標

4.1. 文字認識性能

4.1.1. 文字認識性能評価の対象とする資料

図書及び雑誌のうち出版年代が判明している資料を対象としました。

次の33区分に分けてそれぞれに目標値を設定しています。

  • 図書(20区分):出版年代を1870年代から1960年代までの10年ごとに区切り、その中を日本十進分類法(NDC)に基づき、それぞれ理系(NDC4類~6類)、文系(それ以外のNDC分類)に区切った20区分

  • 雑誌(13区分):出版年代を1870年代から1990年代までの10年ごとに区切った13区分

なお、当館が性能測定検査のために用意した全330画像について、画像中のJIS水準に含まれる漢字(「々」、「仝」及び「〇(漢数字の零)」等の非漢字は含まない。)のうちJIS第1水準及びJIS第2水準の割合は96.9%でした。

4.1.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に近づくほど高い認識性能を表します。

4.1.3. 認識性能の判定基準

「33区分のうち参考値扱いの3区分を除く30区分において、F値の中央値が次の目標値を上回っていること」としました。

資料種別 出版年代 カテゴリー 達成すべき目標値
図書 1870 文系 0.40
図書 1870 理系 0.43
図書 1880 文系 0.65
図書 1880 理系 0.54
図書 1890 文系 0.73
図書 1890 理系 0.60
図書 1900 文系 0.79
図書 1900 理系 0.77
図書 1910 文系 0.81
図書 1910 理系 0.83
図書 1920 文系 0.89
図書 1920 理系 0.89
図書 1930 文系 0.91
図書 1930 理系 0.89
図書 1940 文系 0.92
図書 1940 理系 0.90
図書 1950 文系 0.94
図書 1950 理系 0.94
図書 1960 文系 0.97
図書 1960 理系 0.97
雑誌 1870 - 0.65
雑誌 1880 - 0.74
雑誌 1890 - 0.78
雑誌 1900 - 0.88
雑誌 1910 - 0.84
雑誌 1920 - 0.89
雑誌 1930 - 0.91
雑誌 1940 - 0.91
雑誌 1950 - 0.91
雑誌 1960 - 0.96
雑誌 1970 - (参考値)0.96
雑誌 1980 - (参考値)0.95
雑誌 1990 - (参考値)0.96
平均 - - (※参考値含む)0.79
平均 - - (※参考値除く)0.78

(注)文字認識性能の目標値の根拠

文字認識性能の目標値は、33区分について当館でサンプリングした各10画像ずつの合計330画像に対して人手による作業で正解テキストデータを作成し、次に挙げる3種類のOCRサービス・OCRソフトウェアの認識性能を同様の方法で測定し、各区分毎にそれぞれのOCRサービス・OCRソフトウェアのF値の中央値としました。

なお、OCRサービスについては、令和2年10月時点でそれぞれの公式ウェブサイトから提供されていたサービスを利用しています。

4.2. 読み取り方向の性能

4.2.1. 読み取り方向評価の対象とする資料

原則として作業対象資料全てを評価対象としました。

4.2.2. 読み取り方向の性能評価指標

目視で読み取り方向(縦書き・横書き)を判定した際、対象画像のうち95%以上の画像の認識結果が正しい方向に読み取れていることとし、改行を取り除いた出力結果における全文字の半分以上について文字列の読み取り方向を誤っていると判断する場合、基準を満たしていないものと判定しました。

なお、今回のOCRテキスト化事業の主たる目的が、全文テキスト検索用途のテキストデータの入手であることから、縦書き横書きの読み方向を正しくテキスト化できていることが重要です。したがって、文やフレーズ単位で意味の取れる方向に読み取れていれば正しい方向に読み取れたものと扱いました。

4.3. 処理速度の性能要件

次に示す当館サーバ環境において、ファイル入出力を除く処理時間が1ページあたり2秒以下(見開き画像あたり4秒以下)の要件を満たすこととしました。

  • OS: Ubuntu 18.04LTS
  • Intel(R) Xeon(R) W-3245 CPU @ 3.20GHz 1基
  • GPU:NVIDIA Geforce RTX 2080Ti 1基

5. 開発完了時の文字認識性能(実績値)

性能測定検査のために当館が用意した330画像のデータセットで評価を行った結果を下表に示しています。

33区分中32区分において、目標値よりも高い性能を得ました。目標値に達さなかった1区分は1990年代に出版された雑誌であり、仕様上必ずしも目標値を上回らなくとも良いとする参考値扱いのため、性能評価の対象となっている30区分については全ての区分で目標値を達成しています。 なお、評価は当館サーバ上のdockerコンテナ(環境の詳細は4.3に示したとおり)を利用して当館職員が実施し、1ページあたりの処理時間は1.5秒程度でした。

資料種別 出版年代 カテゴリー 開発完了時の実績値 達成すべき目標値 目標値との差
図書 1870 文系 0.9147 0.40 +0.5147
図書 1870 理系 0.9174 0.43 +0.4874
図書 1880 文系 0.9450 0.65 +0.2950
図書 1880 理系 0.9492 0.54 +0.4092
図書 1890 文系 0.9531 0.73 +0.2231
図書 1890 理系 0.9257 0.60 +0.3257
図書 1900 文系 0.9559 0.79 +0.1659
図書 1900 理系 0.9584 0.77 +0.1884
図書 1910 文系 0.9520 0.81 +0.1420
図書 1910 理系 0.9380 0.83 +0.1080
図書 1920 文系 0.9641 0.89 +0.0741
図書 1920 理系 0.9593 0.89 +0.0693
図書 1930 文系 0.9624 0.91 +0.0524
図書 1930 理系 0.9624 0.89 +0.0724
図書 1940 文系 0.9647 0.92 +0.0447
図書 1940 理系 0.9607 0.90 +0.0607
図書 1950 文系 0.9803 0.94 +0.0403
図書 1950 理系 0.9605 0.94 +0.0205
図書 1960 文系 0.9824 0.97 +0.0124
図書 1960 理系 0.9743 0.97 +0.0043
雑誌 1870 - 0.9290 0.65 +0.2790
雑誌 1880 - 0.9411 0.74 +0.2011
雑誌 1890 - 0.9404 0.78 +0.1604
雑誌 1900 - 0.9525 0.88 +0.0725
雑誌 1910 - 0.9285 0.84 +0.0885
雑誌 1920 - 0.9514 0.89 +0.0614
雑誌 1930 - 0.9534 0.91 +0.0434
雑誌 1940 - 0.9626 0.91 +0.0526
雑誌 1950 - 0.9548 0.91 +0.0448
雑誌 1960 - 0.9846 0.96 +0.0246
雑誌 1970 - 0.9693 0.96 +0.0093
雑誌 1980 - 0.9605 0.95 +0.0105
雑誌 1990 - 0.9376 0.96 -0.0224
平均 - - 0.9548 0.79 +0.1648

6. 成果物に関連する情報

6.1. 成果物の公開

① OCR処理プログラム(NDLOCR)

オープンソースとして当館が公開できるよう、必要な権利処理を行ってあります。

成果物の中で利用しているOSSのライブラリ等についても、寛容型OSS(MIT、BSD、Apache2等)のものを採用しているため、商用・非商用ともに自由な二次利用が可能です。

機能ごとに7つのリポジトリに分かれていますが、下記リポジトリの手順に従うことで、Dockerコンテナとして構築・利用することができます。

② OCRテキストの対応字種データ

NDLOCRの対応字種範囲を公開しています。

③ 開発のため作成したOCR学習用データセット(著作権保護期間満了資料分)

6.2. 当館における成果物の利用について

今回の事業において開発したOCR処理プログラムを利用して、令和3年以降新規にデジタル化した資料から作成するOCR全文テキストデータは、国立国会図書館デジタルコレクションにおける全文検索対象に、順次追加して提供していく予定です。

また、作成された全文テキストデータは視覚障害者等用データ送信サービスでも提供する予定です。

なお、令和4年度は、令和3年度補正予算(第1号)により、視覚障害者等への全文テキストデータの提供を想定したOCR処理プログラム(NDLOCR)の改善のための研究開発事業を実施しています。

6.3. 【研究者・開発者向け】一般公開していない成果物の利用について

著作権保護期間の存続している資料から作成したOCR学習用データセットについては、原資料の著作権保護の観点から不特定多数に向けて公開することができません。

これらのデータに関しては、GitHubから公開している成果物(外部サイト)の利用で充足しない場合に、当館との協議のうえで著作権法上認められた範囲内での利用(著作権法第30条の4の規定による機械学習目的など)に限り、当館と書面を取り交わした上で提供することが可能です。

特に図書館サービスの向上に資する調査研究・技術開発を目的とした利用を歓迎します。

データの提供を希望される方は下記の連絡先までお問い合わせください。

lab(アットマーク)ndl.go.jp

その際、①利用者、②利用したいデータ(内容・範囲)、③利用目的、④利用方法、⑤利用期間 をお知らせください。