UltKit

画像・PDFの表をExcelやCSVに変換する方法 | UltKit

本物の表を含むテキストPDFなら、数秒でExcelに変換できます。写真やスキャンは先にOCRが必要で、タブで揃えただけのテキストの表は、表認識ではなく列の分割が必要です。どの方法でも、結果を信用する前に行数と1列分の合計を確認してください。問題になるのは見た目の崩れではなく、数値の誤りだからです。

Tom OkaforTom OkaforPDF・ドキュメント担当編集者
更新日 12 分で読めます
暗い机の上に置かれた罫線入りの表がある印刷済みの税務書類、電卓アプリを表示したスマートフォン、ペン、ブラックコーヒーのカップを真上から写した写真
Answer

画像やPDFから表を取り出す、いちばん確実で早い方法は何ですか?

まず元データの種類を確認します。ソフトで作成されたPDFにはすでにテキストが入っているため、そのままXLSXに書き出せます。写真やスキャンしたページは、表検出に対応したOCRが必要です。真上からまっすぐ撮影し、約300 dpiで、表の部分だけを切り抜いてください。数値を使う前に、行数と1列の合計を元の資料と照合します。

3種類の表、それぞれ異なる作業

ツールを選ぶ前に、手元の表がどの種類かを確認します。よく見る3種類は、それぞれ失敗の仕方が違うためです。PDFを開き、カーソルで数字を1つ選択してみてください。その数字だけが反転するなら、テキストPDFです。すべての文字が正確な位置にテキストとして保存されているので、抽出の中心は文字を行と列にまとめる作業になります。ページ全体が1つのブロックとして反転する場合や、何も反転しない場合は、表の画像を持っている状態です。まずピクセルを文字として読み取る必要があります。

3つ目のケースは見落としやすいものです。古い会計システムやターミナルソフト、メール本文から出力されたレポートの多くは、表のように見えても、実際にはタブや連続した空白で位置をそろえただけのテキストです。セルはなく、等幅フォントのレイアウトがあるだけです。そのスクリーンショットにOCRをかけると、すでにある情報を捨てることになります。テキストをコピーして列に分割するほうが、速くて正確です。以下のカードで、それぞれの元データに必要な対応をまとめます。

  1. 本物の表を含むテキストPDF

    Excel、会計ソフト、銀行のポータルサイトなどから書き出したものです。文字はすでにテキストなので、変換ツールは枠組みを作り直すだけです。値はほぼ正確に出ますが、結合された見出しで問題が出ることがあります。

  2. スキャンまたは撮影した表

    紙の請求書、印刷された価格表、スキャンした明細書などです。OCRが全文字を読み取ってから表の枠を探すため、画像の品質によって誤読する数字の数が決まります。

  3. 表に見えるタブ区切りのテキスト

    固定幅のレポートや、貼り付けたメール本文などです。コピーしてシートに貼り付け、ExcelのText to ColumnsまたはGoogleスプレッドシートのSplit text to columnsで、タブまたは固定幅を指定して分割します。

表認識が実際に行っていること

表認識は、文字が読み取られたあとに行う2回目の処理です。まずセルを見つけます。罫線のある表では、水平線と垂直線をたどり、囲まれた各ボックスを1つのセルとして扱います。罫線のない表では、ブロックの高さ全体にわたる縦方向の空白の帯を探します。次に列をそろえます。上の数字より数ピクセル右にある数字も、同じ列に属すると判断します。

次は見出し行です。認識ツールは、太字や網掛けの1行目、数値の列の上に単語が並ぶ行を探し、2行に折り返された見出しを1つのセルにまとめます。最後がセルの結合です。たとえば3か月分の列にまたがるQ1のようなラベルは、内部の線がないことから検出され、結合セルとして再現されるか、対象の各列にコピーされます。

これらは内容を理解して行っているわけではありません。ソフトは、ある列が日付であることも、ある行が小計であることも知りません。見ているのは形状と文字だけです。そのため、同じツールでもある明細書は完璧に変換できるのに、別の銀行の次の明細書は崩れることがあります。表のスタイルや見出し行を検出のような設定があるのは、認識ツールが確実には推測できない情報を渡すためです。

表認識が失敗しやすい箇所

失敗の多くは2つのグループに分かれます。1つは形状の失敗で、表の枠が崩れ、値が間違った行や列に入ります。もう1つは数値の失敗で、枠は保たれたままセルの意味が変わります。シートが正常に見えるぶん、こちらのほうが厄介です。列のずれは一目でわかりますが、1.234が千の位ではなく小数として読まれた場合は気づけません。

数値の問題は、主にロケールが原因です。米国と英国では1,234.56、ドイツ、ブラジル、ヨーロッパ大陸の大半では1.234,56と書きます。フランスでは千の位の区切りに空白を使い、スイスでは1'234.56のようにアポストロフィを使うことが多く、インドでは1,23,456のように桁をグループ化します。会計文書では、負の数がかっこで書かれたり、通貨記号が数字に直接付いたりします。注意点と対処法は次のとおりです。

  • 罫線のない表で列がずれる

    表のスタイルを空白で区切られた列にして、線ではなく空白で列を判断させます。表の上下にあって空白の帯を分断する文字は、切り抜いて除いてください。

  • ページが回転または傾いている

    90度回転したページは意味のない文字列として読まれ、数度の傾きでも行が混ざります。スキャンを正しい向きに回転し、画像の傾きを補正をオンのままにしてください。

  • 手書きの記入

    表認識は印刷された文字向けに調整されています。枠のある書式にきれいな大文字のブロック体で書かれていれば、読み取れることが多いです。帳簿の筆記体のメモは、たいてい入力し直すか、セルごとに慎重に確認する必要があります。

  • 1.234が1.234(小数)として読まれる

    小数点の表記を誤って推測しています。小数点記号を自動のままにせず、文書に合わせてカンマ 1.234,56またはドット 1,234.56に設定してください。

  • $、€、ISOコード付きの金額が文字列のまま

    EUR 45.00や45,00 €のようなセルは、数値に変換されないことがあります。検索と置換で記号を取り除き、その列に通貨の表示形式を設定し直してください。

  • (250.00)が文字列として取り込まれる

    会計では、かっこは負の数を表します。Excelは手入力した(250)をマイナス250として読みますが、内部に空白や記号を含む認識済みテキストは文字列のままになることがあります。かっこを先頭のマイナス記号に置き換えてください。

罫線で区切られた番号付きの行と網掛けのボックスがある印刷された税務書類。そばに銀色のペンがあり、暗い色の机に黒いマグカップのコーヒーが置かれている
写真: Unsplash

変換する前に画像を整える

入力データに手をかけた分、スプレッドシートでの修正の手間が減ります。OCRエンジンは、約300 dpiでスキャンされた文字向けに調整されていることが一般的です。A4やUSレターのページでは、およそ2480 × 3508 pxまたは2550 × 3300 pxにあたります。最近のスマートフォンのカメラは、ページが画面いっぱいに入っていれば十分に超えられます。ただし、机の向こうから全体を撮影し、小さな表に切り抜いた場合は、それを大きく下回ることがあります。

解像度と同じくらい、コントラストも重要です。感熱紙のレシートは色あせ、灰色の背景にある灰色の罫線は消え、スマートフォンの影がページにかかると列が途中で分断されることもあります。定期的に抽出する紙の文書がある場合は、書類をPDFにスキャンする方法のガイドで、照明やスキャナーの設定を詳しく紹介しています。アップロードする前に、次のリストを確認してください。

  • ページが平らで、カメラが斜めではなく真上にある
  • 明るい背景に暗い文字で、行にかかる影や反射がない
  • 100%に拡大しても小さな数字が鮮明で、印刷ページなら約300 dpi
  • 表だけに切り抜かれ、レターヘッド、ロゴ、余白のメモが入っていない
  • ページが正しい向きで、1枚の写真に表が1つ、または明確に分かれた表だけが入っている
  • 複数ページにわたる表は、ページを飛ばさず順番に1ページずつ撮影している

表の画像やPDFを表計算ソフトに取り込む5つの方法

ExcelのData from Pictureは、2019年にAndroidアプリに登場し、その後iPhoneにも対応しました。現在は、WindowsとMac向けのMicrosoft 365版Excelで、データ > 図から のメニューから使えます。表を1つ撮影または読み込み、疑わしい値にフラグが付く側面パネルで認識されたセルを確認してから、挿入します。Googleには、もう少し遠回りな方法があります。Googleドライブで画像やPDFを右クリックし、アプリで開く > Google ドキュメントを選びます。Googleのヘルプページによると、2 MB以下のファイルに限られ、PDFは最初の10ページしか読み取られません。結果はドキュメントになるため、表は文字の行として出てくることが多く、それをスプレッドシートに貼り付けて分割します。

Adobe Acrobat Proは、PDFをMicrosoft Excelブックに書き出し、その際にスキャンされたページにOCRをかけます。WindowsのMicrosoft 365版Excelでは、データの取得 > ファイルから > PDFからでも、テキストPDFから表を取り込めます。これはPower Queryが開く方法で、検出された表がページごとに一覧表示されます。明細書の月ごとのページを1つの表に追加でき、翌月のファイルに差し替えると更新されます。ただしスキャンは読み取れず、Mac版Excelにはこのコネクタがありません。

それ以外は、ブラウザ上の変換ツールで、何もインストールせずに対応できます。テキストPDFやスキャンしたPDFには、検出された表をそれぞれ別のシートにするPDFをExcelに変換が使えます。写真やスクリーンショットには、画像をExcelに変換するか、ほかのプログラムに取り込む場合は表をCSVで保存してください。次の表で5つの方法を比較します。

表をスプレッドシートに取り込む方法
方法スキャン・写真の読み取り使える環境向いている用途
ExcelのData from Picture対応Excelのモバイルアプリ、WindowsとMac向けMicrosoft 365印刷された表1つを、セルごとに確認しながら取り込む
GoogleドライブのOCR対応(2 MB以下のファイル)ブラウザで使えるGoogleドライブすでにGoogleスプレッドシートで作業している場合の短い表
AcrobatからExcelへの書き出し対応(Acrobat Pro)Acrobatのデスクトップアプリ(有料)ライセンスをすでに持っている場合の長いPDF
Power QueryのPDFから非対応(テキストPDFのみ)WindowsのMicrosoft 365版Excel毎月同じレイアウトの明細書
ブラウザの変換ツール対応スマートフォンでもパソコンでも、どのブラウザでもインストールなしでXLSXやCSVにする

使う前に結果を確認する

正しく見える変換結果でも、そのまま信頼できる表とは限りません。まず行数を確認します。明細書に47件の取引があるなら、シートのデータ行も47行になるはずです。2行が結合されて46行だったり、折り返された説明が別の行になって49行だったりしてはいけません。次に、数値の列を1つSUMで合計し、文書に印刷された合計と比較します。文書に合計がない場合は、いくつかの値を手計算して照合してください。

次に、数値のふりをしているだけのセルを探します。Excelでは、本物の数値は標準で右揃え、文字列は左揃えになります。そのため、金額の列に左揃えのものが混ざっていれば、何かがおかしいということです。補助列でISNUMBERを使えば、まとめて見つけられます。日付も同じように疑ってください。文字列として読まれた日付は文字順に並ぶため、10/02が2/03より前に来ます。また、03/04は書いた人によって4月3日にも3月4日にもなります。

最後に、変更された点ではなく、失われた点を確認します。長い口座番号やカード番号は典型的な落とし穴です。Excelが保存できる数値は有効桁数15桁なので、16桁のカード番号を数値として入力または取り込むと、最後の桁が0になります。

Tip各金額列の隣に=ISNUMBER(C2)の補助列を追加し、FALSEで絞り込みます。表示された行はすべて、SUM、グラフ、ピボットテーブルで無視される値です。

CSVかXLSXか:出力ファイルの選び方

ExcelやGoogleスプレッドシート、Numbersで人がデータを扱う場合は、XLSXを選びます。複数の表を別々のシートに保存でき、本物の数値型と日付型、太字の見出し行、結合セルも保持されます。家計簿アプリ、会計ソフト、データベース、スクリプトなど、ソフトウェアに取り込ませる場合はCSVを選びます。CSVは1ファイルに1つの表を持つプレーンテキストで、2005年のRFC 4180に定められています。重要な設定は、区切り文字、文字コード、数値を数値として保存するかどうかの3つです。

区切り文字は、取り込み先のプログラムに合わせる必要があります。小数点にカンマを使う国のExcelは、セミコロンを想定しています。文字コードは、MüllerやSão Pauloのような名前が正しく残るかどうかを左右します。Windows版Excelでダブルクリックして正しく読めるのは、BOM付きUTF-8です。先頭のゼロが消えるのは典型的な問題です。米国の郵便番号02134や社員ID、商品コードは数量ではなく識別子ですが、数値として扱われた時点で2134になります。IDが多い表では数値を数値として保存をオフにするか、CSVを取り込む際にその列を文字列に設定してください。

数値として保存

2134

CSVをダブルクリックで開いたあとのボストンの郵便番号です。先頭のゼロが消え、住所リストとの照合が失敗します。

文字列として保存

02134

数値を数値として保存をオフにした場合、または列を文字列として取り込んだ場合の同じセルです。

一括での表の抽出と機密文書の扱い

表を1つ抜き出すだけなら簡単ですが、1年分の請求書や12か月分の銀行明細となると、ちょっとしたデータ作業になります。元の文書は可能な限り同じレイアウトのものをそろえ、1回でまとめて変換すれば、すべてのファイルに同じ設定が適用されます。テキストPDFなら、1回に最大20ファイル、各95 MBまでアップロードできます。明細の取引表が複数ページにまたがる場合は、シートオプションですべて1シートにまとめるを選んでください。写真は表の画像を1枚ずつ変換する形になるため、紙の請求書が何枚もあるときは、先に画像をPDFに変換してページをまとめ、PDFのページで表のある範囲を指定するほうが早いことがよくあります。

一括変換のあとは、元のファイル名を記録する列を追加して、結果を1つのシートにまとめて追記しましょう。文章が中心で表が1、2個だけの文書なら、PDFをWordに変換すると、段落と表をそのままいっしょに保てます。

銀行明細、給与明細、請求書には、口座番号、住所、支出履歴が含まれます。そのため、送信先には慎重になってください。UltKitでは、アップロードしたファイルと生成されたファイルは処理の30分後に削除され、誰かに閲覧されることもありません。それでも、いちばん安全なのは自分のコンピューターから出さないことです。アップロード前に、口座番号の全桁など不要な列をトリミングや黒塗りで隠し、不要になったローカルの出力ファイルは削除してください。

運営者が分からない変換サービスに明細を送らないでください

口座番号や納税者番号が入った文書をアップロードする前に、サイトがファイルの保存期間を明記していること、アドレスバーがHTTPSになっていることを確認してください。雇用主や取引先との契約で金融データの処理場所が制限されている場合は、ExcelのPower Queryなどのデスクトップソフトを使ってください。

ポイント

  • PDF内の数字を1つ選択できるか試してください。選択できるならOCRは不要で、表を直接書き出せます。
  • 写真やスキャンは、傾きがなく、コントラストが高く、約300 dpiで、表の部分だけをトリミングしたものが最もきれいに変換できます。
  • 小数点の記号は文書に合わせて設定してください。地域設定を取り違えると、レイアウトは崩れないまま数値だけが変わります。
  • 抽出した数値を使う前に、元の文書と行数および1列の合計を照合してください。
  • 人が見るならXLSX、ソフトウェアで処理するならCSVが向いています。郵便番号やIDは文字列のままにして、先頭の0を残してください。
共有XFacebookWhatsAppTelegram

よくある質問

PDFの表をそのままExcelにコピーできますか?

場合によります。テキストPDFからコピーしてExcelに貼り付ける方法は、単純な表なら使えますが、1行が1つのセルに入ったり、空のセルがある部分で列がずれたりしがちです。XLSXに書き出すほうが、表の構造をより確実に再現できます。

表のスクリーンショットのほうが、画面を撮影した写真よりきれいに変換できるのはなぜですか?

スクリーンショットは線がまっすぐで、明るさも均一、ピクセルもくっきりしているため、OCRはほとんどテキスト文書のように読み取れます。一方、モニターをスマートフォンで撮影した写真には、反射、モアレ、遠近のゆがみが入り、数字の誤読の大半はこれが原因です。

複数ページにまたがる表はどうやって抽出しますか?

ページ範囲全体を1回の処理で変換し、すべてを1シートにまとめてから、各ページごとに入る繰り返しのヘッダー行を削除してください。行数が元の文書の明細行の合計と一致するかも確認しましょう。

WordやPowerPointファイル内の表も抽出できますか?

WordやPowerPointの表はすでに本物の表なので、認識処理は必要ありません。表を選択してコピーし、ExcelやGoogleスプレッドシートに貼り付ければ、各セルの位置がそのまま保たれます。

日付が5桁の数字に変わってしまったのはなぜですか?

Excelは日付を1900年1月1日からの通し番号で保存しているため、45658は2025年1月1日です。値は正しいので、その列に日付の表示形式を設定すれば、日付として表示し直せます。

OCRの精度は経理業務に使えるほど高いですか?

入力の手間を省ける程度の精度はありますが、確認を省けるほどではありません。帳簿に記帳する前に、合計を元の文書と突き合わせ、残高に影響する値は個別に確認してください。

関連記事