画像の表をExcel・スプレッドシートに変換する方法

表の認識機能が画像から行と列を組み立て直す仕組みと、それを助けるコツ、そしてExcelやGoogle スプレッドシートに入れる前に数値を確認する方法を紹介します。

更新日

表の画像に普通のOCRをかけると、得られるのはテキストの行です。運がよければ、列が数個のスペースで区切られている程度でしょう。それをExcelに貼り付けると、すべてがA列に入ってしまいます。本物のセルにするには、ツールが単語を読むだけでなく、表の構造を組み立て直す必要があります。

このガイドでは、その仕組み、つまずきやすい点、そして結果を使う前に確認する方法を説明します。

表の認識の仕組み

OCRエンジンは、各単語を画像上の位置とともに報告します。表の認識では、その位置を使って行と列がどこにあるかを割り出します。

  • 行は、縦方向の重なりから決まります。上端と下端がそろっている単語は同じ行に属します。よくできたツールはわずかな傾きを許容するので、ページを横切るうちに少しずれていく行もひとまとまりに保たれます。
  • 列は、空白から決まります。ツールは、ほとんどの行を縦に貫く余白の通り道を探します。2本の通り道に挟まれた帯が、それぞれ1つの列になります。
  • 表全体にまたがる行、たとえばタイトルや表の下の注記は、列の位置を決めるときには除外されます。そうしないと、2つの列をつないでしまうからです。
  • 見出し行は、多くの場合、数値の列の上に並んだ単語として認識できます。

重要なのは、罫線よりも配置のそろい方が大切だということです。罫線がまったくなくても、きれいにそろった表なら完璧に変換できることがあります。一方、罫線がすべて引かれていても、列同士が近い窮屈な表ではうまくいかないことがあります。

表の部分だけをトリミングする

画像の中のものはすべて列の検出に関わるので、もっとも効果があるのは、表の周りをぴったりトリミングすることです。

  • 周りのものを取り除きましょう。 上の段落、下の脚注、ページ番号、サイドバー、隣のテキストの段は、どれも列の数を狂わせる位置に単語を加えてしまいます。
  • 1枚の画像には1つの表だけにしましょう。 1ページに表が2つある場合は、別々にトリミングして読み取ります。
  • とても横に長い表は分けましょう。 横長の表を1枚の写真に収めるために縮めると、文字が小さすぎて読めなくなることがあります。代わりに左右2回に分けて撮影し、名前や日付など、行を特定できる列を両方に含めておけば、表計算シートで並べ直せます。
  • 複数ページにわたる長い表。 各ページを読み取り、結果を上から順に貼り付けて、繰り返し出てくる見出し行を削除します。

表がスマートフォンで斜めから撮った写真に写っている場合は、先にまっすぐに補正してください。傾いたり、すぼまったりしている列は、ページをまっすぐ縦に走る列よりずっと見つけにくくなります。

罫線のない表

報告書や明細書の多くは、罫線をまったく使っていません。こうした表も、列のあいだにはっきりした隙間があればうまく読み取れます。問題が起きるのは、隙間がない場合です。

  • 左揃えのテキストの列と右揃えの数値の列が隣り合っていると、そのあいだにわずかな隙間しか残らず、2つの列が1つとして読まれることがあります。
  • 目次の「……..」のような点線のリーダーは、ピリオドが並んだ行として読まれます。
  • 1行おきの網掛けがあると、1行おきにコントラストが下がります。グレースケールに変換してコントラストを上げると効果があります。

2つの列がくっついてしまっても、たいていは最初からやり直さずに、結果の中で分割できます。Image to Text Appの表のグリッドでは、コピーする前にセルを編集したり、行や列を追加・削除したりできます。

結合セルと複数行のセル

実際の表が完璧な格子になっていることはめったになく、いくつかの構造は手で直す必要があります。

  • 複数の列にまたがる見出し。 四半期ごとの4つの列の上にある「2026」のような見出しは、1つのセルに入ります。各列に繰り返すか、表計算シートで2行の見出しにするかを決めましょう。
  • 折り返されたテキスト。 セルのテキストが2行目に折り返されていると、ほとんどのセルが空の余分な行として出てくることがあります。テキストを上の行に移し、余分な行を削除してください。
  • 空のセル。 位置に基づく検出にとって、空のセルはもっとも難しいものです。測るための単語がないからです。空欄のある行では、後ろの値が1列左にずれていないかを確認してください。
  • 回転した見出しの文字や表の中の表は、たいてい手で作り直す必要があります。

数値を確認する

表には、誰かが合計したり、それをもとに判断したりする数値がたくさん並んでいることが多いので、数分かけて確認する価値があります。

  • 合計を使いましょう。 表に合計行があるなら、表計算シートでその列を合計して比べます。一致しなければもっと詳しく見る必要があるとわかり、すべてのセルを確認するよりずっと早く済みます。
  • 行数を数えましょう。 結果の行数が元の表と同じであることを確認します。
  • 形の似た数字を探しましょう。 0とO、1とlと7、5とS、8とB。数値の列に文字が紛れ込んでいれば、表計算シートがそのセルをテキストとして扱うので、簡単に見つけられます。
  • 小数点に注意しましょう。 薄い小数点が消えると、12.50が1250になります。カンマとピリオドが入れ替わることもあります。
  • マイナスの数値を確認しましょう。 マイナス記号は小さく、消えやすいものです。(1,200)のように括弧で囲まれた数値は、Excelではマイナスとして読み込まれます。たいていは元の表の意図どおりです。
  • 数値の書式に気をつけましょう。 多くの国では、1.234,56は1,234.56と同じ意味です。表計算シートの地域設定が文書と異なると、数値がテキストになったり、違う値になったりすることがあります。

表をExcelやGoogle スプレッドシートに入れる

もっとも簡単なのはコピーと貼り付けです。Image to Text Appの表表示からのコピーのように、書式付きのデータとしてコピーした表は、ExcelやGoogle スプレッドシートに別々のセルとして貼り付けられます。表を置きたい左上のセルをクリックして貼り付けてください。

貼り付ける前に、表計算ソフトが勝手に「修正」しがちな列を守りましょう。

  • 郵便番号、電話番号、口座IDの先頭のゼロは、値が数値として扱われると消えてしまいます。
  • 桁数の多い数値は指数表記に変わります。また、Excelは有効桁数を15桁までしか保持しないため、16桁のIDは知らないうちに変わってしまいます。
  • 3-4や1/2のような短いコードは、日付に変換されることがあります。

こうした列は、貼り付ける前に書式を「文字列」に設定するか、値を貼り付けてからあとで書式を直してください。Google スプレッドシートでは、Ctrl+Shift+V(Macは⌘+Shift+V)で書式なしで値だけを貼り付けられます。

CSVとXLSX、どちらを選ぶ?

コピーではなくファイルをダウンロードする場合は、形式が重要になります。

CSVはプレーンテキストで、1行に1つの行を記録し、セルのあいだをカンマで区切ります。ほとんどのプログラムで読み込めるので、会計ソフト、データベース、スクリプトにデータを渡すときに最適です。ただし、書式は持たず、シートも1つだけです。さらに、開いたプログラムが各値の種類を推測するため、そこで先頭のゼロや日付がおかしくなります。基本的な英語以外の文字は、プログラムが文字コードを誤って想定すると文字化けすることもあります。Excelでは、「データ」>「テキストまたはCSVから」で読み込めば、Excelに推測させる代わりに、UTF-8を選んで列の種類を指定できます。

XLSXはExcel独自の形式で、Excel、Google スプレッドシート、そのほかの表計算アプリでそのまま開けます。人が開いて表を扱う場合に使いましょう。

簡単なルールは、人に渡すならXLSX、ほかのプログラムに渡すならCSVです。画像をExcelに変換ツールでは、そのまま表計算シートに貼り付けられるコピーとあわせて、両方の形式を利用できます。

始める前に、元のデータを探す

表がPDFの報告書やWebページから来たものなら、元のファイルに本物のデータが含まれているかもしれません。PDFでテキストを選択してみるか、サイトにダウンロードの機能がないか確認してみてください。表が本当に画像としてしか存在しないなら、できるだけ鮮明でまっすぐな画像にしましょう。詳しくはOCRの精度を上げる方法で紹介しています。そして、これらすべてを可能にしている単語の位置情報がどこから来るのか気になる方は、OCRの仕組みで解説しています。

その他のガイド