経済研究
Vol. 73, No. 1, Jan. 2022

OCR を利用した統計表の体系的なテキストデータ化

＊

有

本

寛

本稿は，OCR を利用して，統計表を体系的かつ大規模にテキストデータ化するための要件と方法を解説する．統計表を OCR でテキストデータ化するには，高い精度の表レイアウト解析が求められる．筆者が開発している ocrstats は，バッチ処理，定型的な工程の自動化，外部 OCR の利用，実用的な精度の表レイアウト解析を実現し，作業効率の改善を図っている．また，ocrstats を使って『日本帝国統計年鑑』をテキストデータ化する過程で得られたノウハウや，パネルデータの作成にあたって変数を経年的にリンクする方法も解説する．
JEL Classification Codes : Y1, No 1

1．はじめにトデータ化する作業の要件と課題を整理し，これを支援するために筆者が開発中のツール

社会科学分野では，統計的手法を使った実証（ocrstats）の概要を解説する．ocrstats は，Py-

研 究 や EBPM
（evidence-based policy making）

thon 言語のパッケージであり，バッチ処理，の関心の高まりなどから，統計データ分析の重定型的な工程の自動化，OCR の利用，独自の要性が増している．明治維新以降，日本では政表レイアウト解析アルゴリズムの実装を通して，

府を中心に膨大な（政府）
統計が作成されてきた．

作業効率の改善を図っている．特に，既存のこうした統計の利用には常に一定のニーズがあOCR で課題であった表復元（統計表の表レイア

るものの，十分活用されていない．その理由は，ウト構造を正確に解析し，認識した文字列を適統計の多くが紙媒体に印刷された統計表，もし正なセルに配置すること）を，実用的な精度でくはよくて電子画像で提供されており，統計デ実現できた点がブレークスルーである．現在，ータとしてコンピュータで利用できる情報は，

ocrstats を使って，『日本帝国統計年鑑（現『日比較的近年のものに限られるからである（以下，

本統計年鑑』）』（1905-40 年分）などの統計をテ

紙媒体の統計情報を「紙統計表」，画像としてキストデータ化し，府県レベルのパネルデータ

デジタル化された統計表を「統計表画像」，機を構築する作業を進めている．この作業過程で械判読可能な統計データを「テキストデータ」

得られたノウハウを共有する．これによって，と呼ぶ ．統計データとしてコンピュータ利用

大規模に
（公的）
統計をテキストデータ化する道するためには紙統計表のテキストデータ化が必筋を示し，その推進に寄与することが狙いであ

要だが，それには膨大な時間とコストがかかるる．

1）（山崎 2018；五十嵐 2020）．また，この作業を構成と概要は以下の通りである．第 2 節では，体系的に進めるノウハウの蓄積や共有が進んでOCR を使って統計表画像をテキストデータ化いないことも，参入障壁となっていると考えらする際の課題を解説する．第 3 節で，作業の流れる．

れを概観する．第 4 節では，ocrstats がどのよ

本稿は，統計表を体系的かつ大規模にテキス

うな支援機能を提供するか，作業工程に沿って

16

経

済

研

究

紹介する．また，表レイアウト解析のアルゴリ

アップ型アプローチである．表レイアウト構造

ズムも解説する．第 5 節では，『日本帝国統計をあえて無視したうえで，画像上の文字列を網年鑑』のテキストデータ化作業を紹介する．さ羅的に OCR 処理し，認識された文字列とそのらに，パネルデータの作成にあたって，変数を

位置情報（文字列を囲む枠線（バウンディングボ

経年的に接続（リンク）し時系列データ化する

ックス）
の座標）
を取得する．そのうえで，位置「系列化」作業の要件と方法を解説する．最後

情報から表レイアウトを解析し，表復元する．

に第 6 節で，課題と今後の展望をまとめる．

トップダウンのアプローチは，最終的に出力

2．OCR の活用と課題される表が，前工程の表レイアウト解析の精度に強く依存する．表レイアウト解析の精度が低

OCR（optical character recognition：光 学 文

いと，空行や空列が混じったり，行や列の途中

字認識）は，画像から文字を認識し，文字コー

でセルがずれたりして，修正に大きな手間がかドに変換する技術である．OCR を利用するこかる．ボトムアップのアプローチは，文字列のとで，データ入力の手間が省け，作業効率を大

範囲特定の精度に強く依存する．いかに正確に，幅に高められる可能性がある．ただし，統計表

表内の各セルの文字列を独立した範囲として認は文字（数値）情報だけでなく，表のレイアウト

識するか（上下左右のセルが連結され，ひとかが重要な意味を持つ．文字列を正確に認識する

たまりの文字列として認識されてしまうことをと同時に，その文字列が表のどのセルに位置す回避するか）がポイントである．この精度が十るのかを特定し，適切に配置することが求めら分高ければ，各文字列の位置情報から統計表のれる．このため，文字認識だけでなく，表のレ

改行・改列の位置座標を特定し，表レイアウト

イアウト構造を正確に解析し，改行・改列位を再構成できる（後述）．さらに，その再構成も置・セルを特定する「表レイアウト解析」（後

何度でも柔軟に修正できるため，事後的に精度述）が必要となる．

を高めることができる．

近年，深層学習などの AI 技術が OCR にも応用されている．ただ，既存の表レイアウト解
析をただちに統計表に利用するのは難しい．既存サービスが主な対象としている商用帳票（領3．統計表のテキストデータ化作業の流れ
本節では，統計表をテキストデータ化する作業の流れを概観する（図 1）．

収書，請求書，身分証明書等）と比べて，統計

1．統計表画像の作成．紙統計表を撮影ない

表は表ごとにレイアウトが異なっていたり，構しスキャンし，デジタル化する．このステップ

造が複雑だったり，複数ページに渡って表が続（a）スキャンの解の精度は後工程に響くため，いたりするといった固有の難しさがある（Raja,

像度は 200 dpi 以上とする，（b）できるだけ水Mondal, and Jawahar 2020, 2 頁）．

平にスキャンする，（c）紙統計表の中心と画像

OCR を使った統計表画像のテキストデータの中心を合わせる，ことが望ましい．

化には，文字認識と表レイアウト解析の順序に

2．画像補正．後工程の精度を上げるため，

よって，2 つのアプローチがある ．ひとつは，

水平と歪みの補正をおこなう．統計表画像が見2）

表レイアウト解析→文字認識をおこなうトップ

開きでスキャンされている場合，左右の頁でダウン型のアプローチである．表レイアウト解「＼／」ないし「／＼」のように，逆方向に傾析し，特定されたセルごとに順次画像を切り出いていることが多い．このため，見開き画像をして OCR 処理し，認識された文字列を元のセのど元で分割し，片ページずつ水平補正をかけ

ル位置に配置して，表復元する．いまひとつは，る．資料画像の可読性を高めるため，白色化処

文字認識→表レイアウト復元をおこなうボトム理をしてもよい3）．

OCR を利用した統計表の体系的なテキストデータ化

17

図 1．統計表のテキストデータ化作業の流れ

注） 網掛けされた工程は ocrstats で自動処理できる．

3．レイアウト解析．画像のどこが統計表で，

キストデータ化することを見据え，開発にあた

どこが統計表の表題や表頭，表側，表体，注釈って，（a）一括処理（バッチ処理）ができること，かを解析し（レイアウト解析），範囲指定したう（b）定型的な工程をできる限り自動化すること，

えでラベルづけする（アノテーション）．

（c）OCR を活用すること，を要件とした．

4．画像切り出し．
（見開きの）資料画像にはocrstats は Python パッケージとして作成し複数の統計表が掲載されていることも多いため，ている．NumPy や Pandas，SciPy といった一

統計表ごとに OCR 処理する範囲の画像を切り

般的な拡張ライブラリのほか，画像処理ライブ

出す（クロップ）．あるいは，統計表全体ではな

ラリとして OpenCV2 を使っている．また，アく，表体のみを切り出してもよい（後述）．

ノテーションツール（VoTT）と OCR エンジン

5．OCR 処理．OCR エンジンで画像を解析し，文字（列）とその位置情報を取得する．
6．表レイアウト解析．表のレイアウト構造を解析し，行・列・セルを特定する．

（CLOVA OCR）を外部ツールとして組み合わせて利用する4）．以下，第 3 節で概観した作業の流れにしたがって，ocrstats がどのように作業を支援できるかを説明する．

7．出力．認識された文字列を，表レイアウ
ト解析で特定した適正なセルに配置し，スプレ
ッドシート上に表として出力する．また，検証用の画像も出力する．
8．校正．認識された文字列が原本通りか，
セル配置が正しいかを検証し，修正する．
4．ocrstats の概要

4. 1

画像補正

ocrstats は画像補正のため，（a）画像を見開き分割し保存，（b）画像を水平補正，（c）
分割・
水平補正した画像を再結合する関数を，それぞれ提供している．見開き分割は，資料ののど元（中心）が画像上どこにあるかを判別する必要がある．現在は，分割位置を引数で指定する5）．

本節では，筆者が開発中のツール（ocrstats）

水平補正は，投影プロファイルに基づいて歪みを解説する．ocrstats は，統計表画像のテキス

角度を特定するアルゴリズムを使っている6）．

トデータ化を体系的に支援する Python 言語の

傾き角度を探索する範囲と，探索角度の精度のツールである．紙媒体もしくは電子画像の状態

2 つの引数を与えて傾き角度を特定し，補正すの統計は，政府統計だけでも無数にある．数百る．

から数千単位の統計表を体系的かつ大規模にテ

18

経

済

研

究

図 2．表レイアウト解析の手順

注）（a）OCR 処理し，認識した文字列のバウンディングボックスを描画．（b）バウンディングボックスを塗りつぶしたモノクロ画像を作成．
（c）水平投影プロファイルの作成．
（d）水平投影プロファイルの差分をとり，ピーク検出．（e）検出したピークを改行
位置（座標）とみなし，水平罫線を引く．

4. 2

レイアウト解析，アノテーション，

理との連携がとれる，（c）文字列範囲の認識精

切り出し度が高い，という要件を満たせば基本的には何次のステップは，OCR 処理する画像の範囲でもよい10）．

（統計表部分）の切り出しである．現時点では，筆者は現時点では CLOVA OCR を採用してocrstats は自動的なレイアウト解析を実装しており，切り出した画像を自動的に API に送信いない．人の目で統計表を特定し，アノテーシする関数を提供している．なお，CLOVA OCR

ョンアプリケーションを使ってその範囲指定，

では，処理結果が json 形式で返ってくる．こおよび表頭，表側，表体，注などラベル付けをのままでは可読性が低いため，整形して csv 形

手動でおこなう（アノテーション） ．このレイ式に変換する関数も備えた11）．

7）

アウト解析とアノテーションは，大きなボトル
ネックではない．アノテーションする箇所が少4. 4

表レイアウト解析

なく（ひとつの統計表につき，多くは 1 つの表

表レイアウト解析では，ボトムアップ型のア体しかない） ，ツールが大量の画像の効率的プローチを採用し，統計表の改行・改列の位置

なアノテーションに必要な機能を備えており，

座標を自動検出するアルゴリズムを実装した．

統計表ひとつにつき 1 分もかからない．

手順は次の通りである（図 2）．

8）

アノテーションアプリケーションは，アノテ（a）統計表画像を OCR 処理し，文字列とそのーションした領域のラベルと座標情報を出力でバウンディングボックスの座標情報を得る．

きる．ocrstats はこの情報をもとに，画像を自（b）バウンディングボックスの座標情報に基動で切り出す ．
9）づき，各バウンディングボックスを塗りつぶしたモノクロ画像を作る．

4. 3

OCR 処理（c）水平・垂直投影プロファイルをとる．水

OCR 処理は，外部の OCR エンジンを利用

平・垂直方向に，塗りつぶしたバウンディン

する．OCR エンジンは，（a）認識した文字列とグボックスのピクセル数を合計し，ヒストグ

そのバウンディングボックスの位置情報が得ら

ラムを作成する作業である．

れる，（b）API やコマンドラインインターフェ（d）次に，ヒストグラムの一つ前の座標とのース（CLI）による操作を受け付けて，バッチ処

差分（変化）を計算する．水平方向（行方向）でOCR を利用した統計表の体系的なテキストデータ化

みたとき，文字列（バウンディングボックス）

19とで，おおむね良好な結果を得ている．

が多い y 座標では，ヒストグラムが正で大きな値をとるが，改行すると文字列がないので

4. 5

出力

ヒストグラムはゼロ（に近い値）
をとる．しが最後に，認識された文字列を適正なセルに配たい，差分をとると急減する．急減のみに注置し，表形式で出力する．文字列配置は，文字目したいため，正の変化はゼロに置換し，さ列の重心が含まれるセルに配置した．具体的ならに変化を正で定義するため絶対値をとる．

手順は次の通りである．

（e）このヒストグラムの変化
（急減）
のピークを

（a）各認識文字列に属性情報（バウンディング

検出し，改行位置の座標を特定する12）．ピー

ボックスの高さ，幅，重心）を追加する．

ク検出は，ピークの高さと幅の 2 つのパラメ（b）各認識文字列に，配置する行と列の番号ータで調整している．
（f）検出したピークに基づき，水平罫線を描画を付与する．重心座標に対して，表レイアウ
ト解析で特定した行と列の座標を境界値としする．

てビニング処理して与える．ひとつのセルに，同様の作業を列方向におこなうことで，改複数の文字列が配置される場合は，当該バウ行・改列位置が特定され，表レイアウトが再現

ンディングボックスたちを左上から右下へのできる．

順に並び替え，文字列を連結する．

ポイントは 3 つある．第 1 は，原画像ではな（c）各認識文字列にアラート情報を付与する．

く，バウンディングボックスのモノクロ画像でバウンディングボックスの高さや幅がセルの投影プロファイルをとることである．バウンデ

大きさより一定以上大きい，文字列の認識精ィングボックスを使うことで，投影プロファイ

度が一定水準より低い，といった条件でフラルのヒストグラムが断続的に変化する．このたグを立てる．

め，差分をとったときの変化が際立ち，ピーク（d）各認識文字列をクリーニングする．空白

検出がしやすくなる．このようなボトムアップの除去や，別途用意した csv 形式の正誤対照型のアプローチが使えるのは，OCR エンジン

表を読み込み，ありがちな OCR の誤認識をが文字列範囲を高精度で特定できるからである．

一括置換する13）．

第 2 に，大きさが異常なバウンディングボッ

（e）各認識文字列に付与したセルの位置情報を

クスを除外する．表体の文字列は，おおむね同

もとに，文字列を適正なセルに配置し，整形

じような大きさの横長のバウンディングボック

して Excel 形式で出力する．文字列やアラースとなる．しかし，表頭は変数の説明であり，トフラグのついたセルは，太字にすることで幅や高さが大きくなりやすい．表側も，文字列
範囲の特定に失敗することが多く，縦長のバウ

要確認箇所を目視しやすくしている．
（f）検証用画像を出力する．原本画像に，（1）

ンディングボックスが形成されてしまう（後述）．

認識文字列のバウンディングボックス，（2）

第 3 は，ピーク検出のパラメータ調整である．

表レイアウト解析で特定した水平・垂直罫線，

改行と改行の間は，平均的な文字列の高さ（バ

（3）
行・列番号
（インデックス）
，
（4）
各バウン

ウンディングボックスの平均的な高さ）以上離ディングボックスの重心，の各レイヤーを重れているだろう．また，ピークの高さ（ヒスト

ね合わせて描画したものである．アラートフ

グラムの急減幅）も，バウンディングボックス

ラグのついた文字列はバウンディングボックの平均的な幅程度はあるだろう．実際に改行は，スの色を変えることで注意喚起している．

ピーク検出する幅のパラメータを，バウンディ
ングボックスの高さの中央値以上に設定するこ

20

経

済

研

究

図 3．主なエラーの例

注）（a）認識範囲不良（「縦読み」）．
（b）認識範囲不良（2 つの文字列を横に連結して認識）．
（c）認識漏れ（2 列目の上から 2 行目の「3」が認識されていない）．

4. 6

文字列そのものの認識精度は高く，特に表体校正校正作業は基本的に人の目に頼らざるを得なの数値部分についてはほぼ認識ミスはない．定い．セル配置の確認は，表復元の工程の精度が型的な認識ミスは正誤表を用意し，置換すれば高ければ，微修正ですむ．一方，認識ミスの確よい．表頭や表側の漢字・かな・カナは，旧字

認と修正はテキストデータ化でもっとも手間が体が混在する場合，修正が必要となることがあかかる工程である．

る．

正確に校正するには，出力されたデータを読み上げて14），原資料と突合する．ただし，これ

4. 7

表頭と表側の処理

は時間と人手とコストがかかる．別の簡易な方

表体はほぼ問題なくテキストデータ化できる

法は，サムチェックによる校正である．統計表

が，表頭と表側は OCR の文字列範囲の認識がには集計欄があることが多い．OCR 処理し整難しく，調整が必要である．表頭は，入れ子構

形した出力データを行・列ごとに合計し，それ造が複雑であり，実用レベルの精度でのテキスと集計欄の数値が合致しているか確認すればよ

トデータ化はできていない（図 5）．

い．合致していない場合は，その行または列の同様の問題は表側でもみられる．表側は都道

どこかに誤認識があるか，原本の数値ないし集府県名などを均等割り付けしてあることが多く，

計欄そのものに誤りがある．行と列それぞれの行方向で文字間隔が開くのに対して，列方向で方向に集計欄があれば，双方で合致していないは詰まっているため，OCR は列方向の縦書き

セルが誤認識の箇所であり，特定が容易である．

と誤認識し，縦長のバウンディングボックスがこの方法では誤認識を完全に検出することはでできてしまう．これは表体の表レイアウト解析

きないが，残る誤認識はランダムな誤差の範囲で特定した改行位置座標で，行ごとに画像を切とみなすこともできよう．

り出し→OCR 処理→再統合することで若干改主だったエラーは，文字列の認識範囲不良と，

善できた
（図 6）
．

認識漏れである（図 3）．認識範囲不良は，原本画像の表レイアウト解析で特定した改行・改列

4. 8

縦書き・漢数字の統計表の処理

位置座標で，画像を列および行ごとに細切れに

縦書き・漢数字の統計表は，文字認識精度に切り出し，それぞれの画像を OCR 処理し，そ

やや難があるものの，表レイアウト解析と文字の結果を再統合することで改善できた（図 4） ．

列配置は，ほぼ実用レベルの精度で整形できて

15）

OCR を利用した統計表の体系的なテキストデータ化

21

図 4．文字列範囲認識不良の回避

注）（a）原本．（b）原本をそのまま処理した．一部で文字列範囲認識不良を起こし，2 つの文字列が連結されている．
（c）原本
画像を行・列ごとに切り出し，それぞれを OCR 処理し，その結果を再統合したもの．範囲認識不良が起きず，適切に認識されている．

図 5．表頭のテキストデータ化の例

いる（図 7）．漢数字はローマ数字の変換フィル

データ化を進めている．本節では，特に『日本ターを介せばよい．

帝国統計年鑑』の作業過程を解説する．

5．
『日本帝国統計年鑑』のテキストデータ化作業の概要

5. 1

資料の概要

『日本帝国統計年鑑』（1882〜）
は，各省庁が収現在，ocrstats を使って，『日本帝国統計年

集した主要公的統計をまとめた，日本の代表的鑑』（1905-40 年，36 冊），『人口動態統計』，『都

かつもっとも基本的な統計書である．現在も道府県別農業基礎統計』の一部統計のテキスト『日本統計年鑑』として継続的に刊行されてい

22

経

済

研

究

図 6．表側の OCR 処理

注）（a）原画像．
（b）原画像を OCR 処理したもの．「縦読み」している．（c）
行ごとに画像を切り出し OCR 処理したもの．（d）整形済み Excel 出力．

図 7．縦書き・漢数字の統計表のテキストデータ化の例

る．規模を概観すると，1905-40 年までの 36

かかる．プロジェクトでは，探索範囲を 2 度，

年分で約 22,000 表（1 年平均 610 表）ある．現在，探索精度を 0.02 度に設定した．この設定で進めている作業では，一部分野を対象から外

画像 1 枚当たり約 2 分かかるため，夜間に処

し16），さらに都道府県別の情報が得られる統計

理をおこなっている．なるべく水平にスキャ

表のテキストデータ化に限定している．これにンしておけば，探索範囲を狭められるため，

より，36 年分全体で約 4,200 表が対象となる．

処理時間を短縮できる．


5. 2

作業過程での留意事項

作業にあたっての一般的な留意事項を列挙す

る画像の範囲は，表体のみとした．前述のとおり，表頭や表側の文字列範囲の特定精度がる．


アノテーションは，オープンソースのツールである VIA を利用している．OCR 処理す

水平画像補正は，傾き角度を探索する範囲と精度にもよるが，ループ処理のため時間が悪く，それが表レイアウト解析の際にノイズとなるからである．

OCR を利用した統計表の体系的なテキストデータ化

23

図 8．入れ子構造の表頭の例



表頭と表側は OCR 処理から除外している

メタデータに表体の開始行を記載しておくため，手入力となる．表頭は入れ子構造になとデータの位置を機械ことで，表頭（変数名）っており複雑なため，やむを得ない．表側は的に読み取ることができる．これにより，表原則として都道府県名であり，コピー＆ペー

頭の処理（複数行に分かれた入れ子構造を連ストで対応できる．ただし，年や統計表によ結する）や，データのみの読み取りといったって，都道府県の並び順が違っていたり，地作業が容易になる18）．

区ごとの小計行が挟まっていたり，該当しない場合は行そのものが省略されていたりする

5. 3

系列化

ため，校正時の確認は必要である．

『日本帝国統計年鑑』に限らず，公的統計は校正を終えた統計表のテキストデータは一般に同じ情報（変数）
が経年的に得られること

Excel 形式で出力している．統計表のフォーが多い．以下，同じ変数を経年的に接続（リンマットは次の原則に則って指定した．第 1 は，

ク）し，時系列データにすることを「系列化」

機械判読可能性を担保することであり，総務と呼ぶことにしよう．研究用途では，都道府県「統計表における機械判読可
省統計局（2020）

別の横断面データと時系列データを合わせた，能なデータ作成に関する表記方法」のガイド

府県×年パネルデータとしての需要が高い．こラインにしたがっている．表頭が複数行に分のため，プロジェクトでは 1 冊ずつ年ごとにテかれることを許容するかは意見の割れるとこ

キストデータ化するのではなく，優先順位の高ろだが，表頭の複雑な入れ子構造を把握する

い変数ごとに（年度を超えて）作業を進めている．

ため，現時点では許容している（図 8）．校正

変数単位で作業をするためには，目的の変数の過程でサムチェックの行や列などが追加さが各年のどの表に掲載されているかを特定する

れるが，これは適切な行インデックス を付必要がある．変数 x の表記が経年的に一貫し与し，統計処理する際は機械的に除外できるており，かつ必ず表題 N の統計表に記載されようにした．第 2 は，できる限り原本の統計ていれば話は単純で，各年の表題 N の統計表

表を忠実に再現することである．原本との参をテキストデータ化し，変数 x を接続すれば照可能性を担保するためである．このため，よい．しかし実際には，年によって（a）変数の原本上の明らかな誤植もそのまま残す．した

定義が変わる，（b）変数名（表頭）の表記が揺れがい，修正は，利用者が各自で正誤表を用意

る（x が x' に な る），（c）表 題 の 表 記 も 揺 れ るし，統計処理スクリプトを使って明示的にお（表題 N が N' になる），（d）表が分割したり，



17）

こなう．

統合されたりする，といった問題がある．特にデータのシートのほかに，メタデータのシ（d）は，表単位ですら表題を手がかりに接続でートを作成し，そこに表体の開始行，掲載年，

きないことを意味する．変数 x が表題 N の統

統計表番号，表題，表注，注釈（サムチェッ

計表にあると思っていたら，ある年から表題

クの不整合など，校正時に気づいた点など），

N の統計表が，表題 N と N'（表題の表記が揺

更新履歴を記録することとした．

れると N' や N" など）のふたつの統計表に分離



24

経

済

し，どちらにあるか分からないという状況が生じる．
このため，関連する複数の表を含む広めの

研

究

このため，
（A）どの変数を接続したかを確認できる透明性，（B）異なるリンクに容易に切り替えられる柔軟性，を確保することを要件とした．

「系列」単位で，経年的に接続することにした．

系列化の手順は次の通りである（図 9）：先の例だと，表題 N，N'，N" の統計表をひと（a）「全 年 変 数 名 一 覧」を 作 成 す る．こ れ はつの「系列」とする．そうすれば，目的の変数「系列」に含まれるすべての年のすべての統

x は，系列内の統計表のどこかにはある．

計表の変数名を一覧にしたものである．掲載

系列を作成する具体的な手順は次の通りである．

年 1 年分のすべての変数名を一行にまとめる．
（b）「変数名変遷表」を作成する．これは同一（a）全統計表の目録を作成する．ひとつの統計

内容の変数の名称が，経年的にどう変遷した表について，掲載年，分野，表番号，表題，（と判断した）かを把握するための表である．

統計書上および PDF ファイル上の開始ペー

まず，一覧表の 1 行目をタイトル行，つまりジなどの情報を 1 行にまとめ，一覧にしたも（以下，経年
経年的に一貫した統一の変数名のである．以下，この統計表目録の各行（統

一貫変数名）の行とし，適切な経年一貫変数

計表）に「系列名」の情報を付与する．

名 x を決める．次に，x と同一内容の変数を（b）1915 年を基準年とし，「系列」名を定め，各年特定し，同じ列に配置する．t 年では x'，

その系列に属する統計表を特定する．例えば

t+1 年では x" とだったとすると，x と同じ「学齢児童」系列には，「学齢児童」，「不就学

列に x', x" を配置するよう組み替える．

学齢児童」，「小学校及学級」といった表題の（c）「変数名対照表」を作成する．これは，年表が含まれる（表題は年によって異なる）．

ごとに固有の年固有変数名と経年一貫変数名（c）年ごとに，基準年の各系列に含まれる統計を対照させた表である．上記の例では，t 年

表と同じ情報が含まれる統計表を拾い出す．

では x'=x，t+1 年では x"=x，といった対統計表目録に系列名の列を追加し，拾い出し

照関係を表す．

た統計表の行の「系列名」列に，（b）の系列名（上記例では「学齢児童」）を入力する．

（d）変数名対照表をもとに，年ごとに年固有
変数名を経年一貫変数名に置換する．t 年では x' を x に，t+1 年 で は x" を x に 置 換 す

以上の作業により，統計表目録を系列名で絞る．これによって，すべての年について，共り込むと，その系列に含まれる統計表の一覧が通の経年一貫変数名がついた統計表が作成さ得られる．以降，系列単位での作業が可能となれる．

る．まず，系列ごとに，PDF ファイルから該（e）経年一貫変数名に統一された年ごとのファ当する統計表が含まれるページを画像抽出する．

イルを縦
（行方向）
に連結
（append）
する．

統計表目録に，PDF 上の開始ページの情報を付加しておいたため，この抽出作業は自動化し以上で，パネルデータが作成できる．前述のている．次に，水平補正，アノテーション，画

要件（A）（B）は，変数名変遷表を確認または改像切り取り，OCR 処理，校正と進む．校正作訂することで実現できる．変数名変遷表の作業が終わった段階で，t 年の表題 N として独立

成・確認・改訂は，どの変数を接続するかを目した統計表群が完成する．

視しながら判断する手作業となるため，Excel

続いて，系列化をおこなう．どの変数を同一とみなし，経年的に接続するかは，統計の定義や研究者の解釈によって異なる見解がありえる．

ファイル上でおこなう．それ以外の工程は処理
スクリプトを用意した．

OCR を利用した統計表の体系的なテキストデータ化

25

図 9．系列化の手順

5. 4

手入力との比較

最後に，手入力との比較をしておく．手入力の場合は，専門業者に外注することが多いだろできる．また，入力する作業員を増やせば並列処理ができるため，納期も短縮できる可能性がある．

う．外注する場合は，（a）テキストデータ化す

ocrstats を使って内製する場合，費用としてる統計表の指定，（c）出力フォーマットの作

は，手作業の工程の人件費，管理費，OCR 利成・指定，（d）校正方法等の仕様，の策定と指用料がかかる．手作業の工程はアノテーション示が必要である．校正は一般に，2 名が独立にと校正である．前述のとおり，アノテーション

入力したものを突合して誤入力を検証する（とはさほど時間はかからず，集中的に実施できる．

謳っている）．ただし，これにはオプション料

校 正 は，表 や 作 業 員 に よ っ て 1 表 あ た り

金がかかったり，誤入力が残っているケースも10〜30 分程度かかる．さらに作業全体の進散見されるため，品質管理が必要である．以上

管理も必要となろう．校正は一定のトレーニンの仕様を業者と合意できれば，作業管理は委託

グと慣れが必要であることから，容易には作業

26

経

済

研

究

員を増やせず並列処理が難しく，納期が長くな

政府統計や「府県統計書」など），テキストデ

る．OCR 利用料は OCR 処理を集中的に実施

ータおよび作業情報のレポジトリの作成（情報すれば，大きな費用負担にはならないだろう19）．

24）のようなクラウの集約化），「みんなで翻刻」

以上，大まかな試算では，ocrstats を利用す

ドソーシング型プロジェクトの展開，などが挙ることで費用としては手入力の 12〜34 程度

げられる．特に，府県統計書のような大規模なに抑えられる．ただし，進管理が必要なこと，

統計は，多数の市民の参加と協力を募って校正納期がかかることが欠点である．

作業を進め，公共財をつくり上げることが考え

6．課題と今後の展望られる．
（一橋大学経済研究所）

本稿では，OCR を使った統計表画像のテキストデータ化の要件やノウハウを解説し，支援
ツール ocrstats の機能を紹介した．締めくく
りに，課題と今後の展望を整理する．
ocrstats の課題として，優先順位順に以下の機能強化が挙げられる．
1．複数の出力結果の統合による差分の利用．
異なる OCR エンジンを使って，OCR 処理と表復元をおこない，復元結果を突合する20）．結果が相違するセルは，誤認識の確率が高いため，
強調表示して，目視でチェックする．
2．レイアウト解析の自動化．レイアウト解
析の技術は急速に進展しており，さまざまなア
ルゴリズムやパッケージが公開されている21）．
これらを活用できれば，レイアウト解析やアノテーションも含めて，校正までの過程は全自動化できる．また，表側も含めてテキストデータ化できるようになる（4. 7 節）．
3．標準化．さまざまな OCR やアノテーシ
ョンの出力も受け付けられるよう，ALTO，hOCR な ど の OCR の 出 力 標 準22）や，PascalVOC，YOLO，COCO などのアノテーションの標準に対応させる．
4．見開き位置の自動検出とページ分割．これはすでに深層学習等を利用した Python スク
リプトのソースコードが公開されている23）．
5．表頭の解析と OCR の実装．表頭は入れ子構造，文字列の折り返し，均等割り付けなど，機械的な表レイアウト解析が難しい．
（政府）統計表のテキストデータ化全般については，テキストデータ化する統計の拡大（各種

注＊ 本稿の執筆にあたり，青池亨氏および一橋大学
経済研究所定例研究会の参加者から有益な示唆やコメントを得た．藤岡健太郎，望月祐之，吉野美奈子，田中美那子，小林優香各氏にシステム構築や校正作業等の支援を頂いた．また，相川雄哉，小谷厚起，銭悠宝，
羽生寛明，廣瀬総一郎各氏は非常に優秀なリサーチア
シスタントとして，研究を補助して頂いた．記して感謝したい．本稿は，日本学術振興会・二国間交流事業
共同研究・セミナー「『行き倒れ』の日韓比較史：『行旅 死 亡 人』デ ー タ か ら の 接 近」（課 題 番 号 ：JPJSBP120208803，研究代表者：有本寛），および日本学術振興会・人文学・社会科学データインフラスト
ラクチャー構築推進事業（業務主任者：深尾京司・一橋大学特任教授）の成果の一部である．
1） テキストデータ化を「電子化」と呼んでもよい．
実際，「電子化」や “digitize” という場合，テキストデータ化を意味していることが多い．ただ，電子画像とすることを「電子化」と呼ぶこともある．近年，各種資料のマイクロフィルムの電子画像化が進み，JAPAN SEARCH や J-DAC などのデジタルアーカイブ
や，国会図書館デジタルコレクションで提供されていることが多い．これを受けて，「○○は電子化されている」と称されることがあるが，実際は電子画像化に留まっている．本稿ではこうした混同を避けるため，
電子画像化とテキストデータ化を区別し，両者を合わせて電子化と呼ぶことにする．
2） くずし字 OCR におけるトップダウン・ボトム
アップ型のアプローチの相違については，北本・タリ
ン・Lamb・Bober-Irizar（2019，230 頁）を参照．
3） 白色化の有無が OCR 精度を左右するかは，今後の検証が必要である．体感では大きな影響はない．
4） 後述するように，これらの外部ツールは VoTTや CLOVA OCR に限定する必要はない．
5） デフォルトでは画像幅の中心（半分）で左右に分割する．引数で，左右それぞれ，分割する位置を画像幅の比率で指定できる．例えば，左から 0.52，右から0.48 であれば，画像の中心からやや右に寄ったところで分割する．余裕をもってどちらも 0.52 程度に設定しておけば，中心が多少ずれていても，ページ途中で切り出されることはない．

OCR を利用した統計表の体系的なテキストデータ化
6） https://stackoverflow.com/questions/57964634/
python-opencv-skew-correction-for-ocr7） アノテーションツールは，画像上の範囲指定と，指定範囲の座標情報が得られれば，何でもよい．フリーのツールとしては，VoTT や VIA，LabelImg などがある．
8） この単純さが，多数のタグづけと複雑なレイア
ウト解析とが必要な，『人事興信録』や企業会計報告書集（Shen, Zhang, and Dell, 2020）との違いである．
9） 切り出しは，OS に付属の画像加工ソフトウェ
アなどを使って手動でおこなってもよいが，アノテー
ションツールを使う方が利便がよいだろう．切り出し
範囲の修正などの手戻りが容易であり，画像ファイルが増えて記憶媒体の容量を圧迫することもない．
10） クラウド型汎用 OCR エンジンとして CLOVA OCR，Google Cloud Vision，Amazon Textract，
市販の OCR パッケージソフトとしては「読取革命Ver. 15」，「e. Typist v. 15.0」，「ABBYY FineReader
PDF」などがある．市販パッケージは導入費用が安いが，必要要件を満たせず，現時点では利用は除外している．ほかに，オープンソースの OCR エンジンである Tesseract を使う選択肢もある．表復元の工程の精度が要件（c）に強く依存しており，その精度が高いという観点から，ocrstats では CLOVA OCR を利用している．
11） なお，以降の工程は，認識された文字列，信頼度，バウンディングボックスの座標情報を含む csv
ファイルがあればよい．これらの情報を含む csv ファ
イルが作成できれば，OCR エンジンは何でもよい．
12） 画像が完全に水平で，ノイズがまったくなけ
れば，ヒストグラムが 0 である位置（の例えば中心）を改行位置と推定できる．しかし，活字ベースの統計表のスキャン画像は歪みがあり，垂直罫線があることも多いため，この手法は使わなかった．
13） 例 え ば，「エ」と「1」，「g」と「9」，「G」と「6」，「S」と「8」，「ク」と「7」，「ち」と「5」な どがよく誤認識される．これらの正誤対照表を csv ファ
イルにまとめ，一括置換する．
14） OS の読み上げ機能を使えば，追加的な人手はかからない．読み上げ速度の調整もできる．
15） CLOVA OCR では，罫線にある程度（3 ピクセ
ル）の太さがないと，文字列を分割して認識しない．
ただし，罫線を太くすると文字列と重なり，認識精度が悪化することがある．この場合は，行や列，場合によってはセルで画像を切り出しして OCR 処理すればよい．
16） 人口，農林水産業，貿易，植民地，国際統計は除いている．人口，農林水産業は，別に利用可能な統計がある（『人口動態長期統計時系列データ』，『都道
府県別農業基礎統計』）．
17） 行は都道府県でインデックスされる．サムチ
ェックの行は，都道府県を指定する変数（列）に都道府
県名の代わりに「check」といった特定の文字列を入れた．統計分析の際は，都道府県名が「check」の行を除外すればよい．
18） 例えば，データ開始行が 3 であれば，1〜2 行
目は表頭である．同じ列の 1 行目と 2 行目の文字列を27連結して，入れ子構造をフラットにした変数名を作成したり，3 行目以降の範囲を読み込むことで，データのみにアクセスできる．
19） OCR 利用料は，従量制や月額制の設定が多い．
CLOVA OCR は 1ヶ月 2.2 万円の月額制である．OCR
処理を集中的に実施すれば，費用はこれで収まる．従量制の場合も 1 枚当たりの単価は低い．
20） 同様の発想で文章資料の OCR 処理の正確性を高めているものとして Bleamer（2018）.
21） 深層学習を利用した表検出・表レイアウト解
析には，Ohta et al.
（2019）, Prasad et al.（2020）, Raja,
Mondal, and Jawahar（2020）などがある．深層学習による一般的な文書画像解析を，日本語歴史資料を含めた 資 料 に 活 用 し た ツ ー ル と し て は，LayoutParser（Shen et al. 2021）や青池・里見・川島（2018）などを参
照．アノテーション済みの日本語歴史資料レイアウト
データセットとしては，「古典籍資料」や「明治期以降刊行資料」が「NDL-DocL」（青池・木下・里見・川島，2019）として，『人事興信録』（第 17 版）
（1953 年）の デ ー タ セ ッ ト が「HJDataset」（Shen, Zhang, andDell, 2020）として公開されている．
22） OCR 出力間の変換については，https://github.
com/cneud/ocr-conversion を参照．
23） https://github.com/ndl-lab/ssd_keras24） https://honkoku.org/
引 用 文 献青池亨・木下貴文・里見航・川島隆徳（2019）「機械学習のための資料レイアウトデータセットの構築と公開」『じんもんこん 2019 論文集』，pp. 115-120．
青池亨・里見航・川島隆徳（2018）「資料画像中の挿絵
領域の自動抽出及び画像検索システムの実装」『じんもんこん 2018 論文集』，pp. 97-102．
五十嵐彰（2020）「『日本帝国統計年鑑』を電子化しての雑感」『社会と統計（立教大学社会情報教育研究センター研究紀要）』第 6 号，pp. 55-64．
北本朝展・カラーヌワット タリン・Alex Lamb・Mikel Bober-Irizar（2019）「くずし字認識のための
Kaggle 機械学習コンペティションの経過と成果」『じんもんこん 2019 論文集』，pp. 223-230．
総務省統計局（2020）「統計表における機械判読可能なデータ作成に関する表記方法」（https://www.soumu.
go.jp/main_content/000723697.pdf）
山崎翔平（2018）「歴史研究におけるデータ利活用事
例：近代日本における府県別平均就学年数の推計」
mimeo.（URL : http://hdl.handle.net/2261/00076476）
Bleemer, Zachary（2018）“The UC Cliometric History Project and formatted Optical Character Recognition,” Research & Occasional Paper Series : CSHE.
3.18, UC Berkeley.（URL : https: //cshe. berkeley.
edu/publications/uc-cliometric-history-project-andformatted-optical-character-recognition-zachary）
Ohta, M., Yamada, R., Kanazawa, T., and Takasu, A.
（2019）“A Cell-Detection-Based Table-Structure
Recognition Method,” In Proceedings of the ACM
Symposium on Document Engineering 2019（DocEng ʼ19）. Association for Computing Machinery,

28

経

済

New York, NY, USA, Article 27, 1-4. DOI : https://doi.org/10.1145/3342558.3345412
Prasad, D., Gadpal, A., Kapadni, K., Visave, M., andSultanpure, K.（2020）“CascadeTabNet : An Approach for End to End Table Detection and
Structure Recognition from Image-Based Documents,” In Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition
Workshops （pp. 572-573）. arXiv preprint arXiv :2004.12629v2.
Raja, S., Mondal, A., and Jawahar, C. V.（2020）“Table
Structure Recognition using Top-Down and BottomUp Cues.” In European Conference on Computer

研

究
Vision（pp. 70-86）. Springer, Cham. arxiv preprint
arXiv : 2010.04565v1.
Shen, Z., Zhang, R., Dell, M.（2020）“A Large Datasetof Historical Japanese Documents with Complex
Layouts,” arXiv preprint arXiv : 2004.08686v1.
Shen, Z., Zhang, R., Dell, M., Lee, B. C. G., Carlson, J., and
Li, W.（2021）“LayoutParser : A Unified Toolkit for
Deep Learning Based Document Image Analysis,”
arXiv preprint arXiv : 2103.15348.
Shen, Z., Zhao, J., Dell, M., Yu, Y., and Li, W.（2021）“OLALA : Object-Level Active Learning for Efficient Document Layout Annotation,” arXiv preprint
arXiv : 2010.01762v3.