0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

銀行明細PDFをXLSX・CSV・JSONに変換するときに分離すべき処理と検証

0
Posted at

銀行明細PDFから取引データを抽出できても、その結果をすぐに完成した
スプレッドシートとして扱うのは危険です。日付や金額が表形式で並んでいるだけでは、
行の欠落、入出金方向の逆転、残高列の誤認識を検出できないためです。

抽出とエクスポートを別の状態として扱う

処理を次のように分離すると、失敗条件を明確にできます。

  1. PDFを読み取る
  2. 取引候補を共通フィールドへ正規化する
  3. 必須項目や金額方向、残高関係を検証する
  4. ユーザーが結果を確認する
  5. 検証に通った同じ結果からXLSX・CSV・JSONを生成する

パーサーが値を返したことと、安全に再利用できることは同じではありません。
必要な検証に通らない場合は、見た目だけ完成したファイルを生成せず、
明示的に失敗させる方が扱いやすくなります。

金額の方向を明示する

明細のレイアウトには、借方・貸方を別々の列で表すもの、符号付き金額を使うもの、
取引種別と一つの金額列を組み合わせるものがあります。

正規化後のデータでは、少なくとも次の項目を区別できるようにします。

  • 取引日
  • 摘要
  • 出金
  • 入金
  • 残高(明細に存在する場合)

日付と金額を文字列だけにすると、並べ替えや集計で別の問題が起きるため、
エクスポート先でも型を維持する必要があります。

3つの形式を同じ検証結果から作る

  • XLSX: フィルター、並べ替え、確認メモなど人が続けて作業する場合
  • CSV: 単純な行列データを別のツールへ渡す場合
  • JSON: アプリケーションが構造化された取引レコードを使う場合

形式ごとに別々の抽出処理を行うと、同じPDFから作ったファイル同士で値がずれる可能性があります。
一つの検証済み結果から各形式を生成する方が、差分を小さくできます。

Bank Statement Converter は、デジタルPDFと
スキャンPDFを対象に、確認用の取引表とXLSX・CSV・JSONを提供します。
PDFの物理1ページを1クレジットとして扱い、変換に失敗した場合は0クレジットです。

ただし、すべての銀行やレイアウトへの対応を保証するものではありません。
出力は元の明細と比較し、会計・税務・法務上の判断は別途行う必要があります。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?