医療請求書データ抽出

AI医療請求書→Excel変換 — 手技コード、請求額、患者情報を手入力不要で抽出

病院請求書の明細を手入力すると、1ページあたり3~5分かかります。各行にはCPTコード、レベニューコード、ICD-10診断コードが含まれていますが、テンプレートベースのOCRではこれらがすべて「コード」列にまとめられ、何の処置が、どこで、なぜ行われたかの区別が失われます。本ツールは各コードを専用の列に抽出し、1ページあたり5~10秒で処理します。

暗号化処理 · 変換後自動データ削除

PDF・スキャン
XLSX/CSV
CPT / ICD-10 / HCPCS

医療請求書から抽出できる項目

必要な列名を入力するだけで、AIが各項目の意味を理解し、CPT処置コード、病院部門を示すレベニューコード、診療根拠となるICD-10診断コードなど、あらゆる医療請求書から該当する値を自動抽出します。

医療機関名
患者名
患者ID/口座番号
診療日
収益コード(4桁)
CPT/HCPCSコード
ICD-10診断コード
サービス内容
NDC(医薬品コード)
単位数/数量
請求金額
患者負担額

このツールはカスタム列抽出を使用します。出力スプレッドシートの列名(「CPTコード」「レベニューコード」「ICD-10診断名」「請求金額」など)をユーザーが指定し、AIが各請求書から該当する値を意味的に理解して抽出します。固定テンプレートや座標に依存しないため、1つの列名セットで、明細付き病院請求書、自由形式のクリニック請求書、CMS-1500請求書フォームのすべてに対応できます。また、推論列を定義することも可能です。たとえば「明細カテゴリ(選択肢:検査/薬剤/画像診断/処置/診察)」という列を設定すると、AIがレベニューコードのプレフィックス、CPTコードの範囲、サービス説明文に基づいて各明細を分類し、請求書に明示的なラベルがなくても出力にその分類を追加します。

なぜ医療請求書はテンプレート抽出で破綻するのか — 本ツールの違い

医療請求書は単一テーブルの文書ではありません。各行がCPT/HCPCS(何をしたか)、レベニューコード(どこで行ったか)、ICD-10(なぜ必要か)という3つの独立したコード体系を参照し、薬剤行にはNDCコードも含まれる多層構造の記録です。Redditユーザーは、これらの相互参照コードを「誰も埋めたがらない50列」のスプレッドシートで追跡しようとする苦労を語っており、医療請求の経験者でも手に負えないと感じています。以下、これらの文書が特に難しい理由と、AIが各階層をどう処理するかを説明します。

01

1つの明細行に3種類のコード体系が混在するが、テンプレート型OCRはすべてを汎用コードとして扱う。 病院の明細書では、1行に収入コード(4桁、例:検査科の0300)、CPTコード(5桁、例:代謝パネルの80053)、ICD-10診断コード(英数字、例:2型糖尿病のE11.9)が含まれ、それぞれ目的が異なる。薬剤明細にはさらにNDCコード(11桁、例:63323073912)が加わる。「コード」を1列として読み取るテンプレートは、これら4つすべてを1つのフィールドにまとめるか、最悪の場合1つだけ抽出して他を黙って破棄し、請求チーム、監査人、査定担当者が依存するコード間の関係性を破壊する。

02

「検査科—一般」のようなセクション見出しが明細行の間にあり、データ行として取り込まれる。 病院の請求明細書では、IV療法、薬剤科、検査科といった太字中央揃えのカテゴリ見出しが、列をまたぐ視覚的な区切りとして配置され、請求対象項目ではない。座標ベースの抽出ツールはすべてのテキスト行をデータ行として読み取るため、これらの見出しを明細行として出力し、金額が空の行や破損したスプレッドシート構造を生成する。Redditでは、ユーザーが医療費明細の解読を「第二の仕事」と表現しているが、その一因は、見出しとデータの区別が自動ツールには見えず、それでいて有用な出力を得るために極めて重要だからである。

03

査定担当者は、まったく異なるフォーマットの請求書を十数もの医療機関から処理する。 ある病院は、42列目に収入コード、別のセクションにCPTコードがあるUB-04表形式の明細書を送る。診療所は、CPTコードが説明文にインラインで埋め込まれた自由形式の請求書を送る。外来手術センターは、ボックス24D~24Jにコードが記載されたCMS-1500を送る。テンプレート型ツールは、フォーマットのバリエーションごとに医療機関ごとの設定が必要であり、医療機関が請求システムを変更(紙から新しいEHR生成PDFへのアップグレードなど)するとテンプレートが使えなくなる。20以上の医療機関フォーマットに対応するテンプレートの設定と保守は、自動化の目的を損なう大きな負担となる。

01

コード種別ごとに個別の列を定義し、AIがその意味を理解して正しい列にマッピングします。 列名を「CPTコード」「レベニューコード」「ICD-10診断コード」「NDC」と設定すれば、AIは各コードの構造とページ上の文脈から種類を識別します。CPTコードは常に5桁の手技識別子、レベニューコードは4桁の場所コード、ICD-10コードは英数字の診断文字列、NDCコードは薬剤ラインにのみ現れる11桁の数値医薬品識別子です。各コードは正しい名前の列に配置され、請求元、実施されたサービス、医学的必要性の関係性が保持されます。どのコードも汎用的な「コード」列にまとめられることはありません。

02

AIがドキュメントの視覚的階層を読み取り、セクションヘッダーと実際の請求明細行を区別します。 「検査—一般」や「薬局—025Xの拡張」といったセクションヘッダーは、太字、中央揃え、複数列にまたがる配置、隣接セルに数値の請求データがないことなど、視覚的な文脈から識別されます。AIは人間の請求専門家と同じようにドキュメントを読み取り、これらがカテゴリ区切りでありデータ行ではないと認識し、実際のサービス説明、コード、請求金額を含む行のみを抽出します。出力されるスプレッドシートには、ヘッダーエントリが混入していないクリーンなデータ行が含まれます。

03

1セットの列名で、UB-04、CMS-1500、自由形式のクリニック請求書、薬局明細書など、あらゆるプロバイダーと形式からデータを一括抽出します。 異なる施設からの請求書を同じバッチにアップロードします。列を「プロバイダー名」「サービス日」「CPTコード」「レベニューコード」「請求金額」と一度定義すれば、AIは各ドキュメントの独自のレイアウトを読み取り、ページ上のフィールド位置に関係なく一致するデータを識別し、すべてを1つのスプレッドシートに統合します。プロバイダー列が各行の元施設を追跡します。プロバイダーが請求形式を変更しても、テンプレートの更新は不要です。AIは新しいレイアウトも以前と同じように読み取ります。これこそがプロバイダー間のバッチ処理に実際に必要なことです。つまり、単に複数ファイルをアップロードするだけでなく、プロバイダーごとの設定なしに、一貫性のないレイアウトから一貫したデータを抽出することです。

複数プロバイダの医療請求書を一括で統合する仕組み

アップロード — そのままの形式で

3ページの明細付き病院請求書(UB-04形式、収入コードとCPTコードが別列)、200dpiでスキャンした診療所請求書(CPTコードがサービス説明文にインライン)、外来手術センターのCMS-1500請求書、各行にNDCコードのある薬局明細書、専門医の手書き診察請求書を含むバッチをアップロードします。形式はデジタルPDF、スキャン文書、手書き文書と様々です。プロバイダーや形式ごとの事前仕分けは不要です。請求額と照合するための対応するEOBも必要な場合は、同じバッチにアップロードしてください。

列を定義 — 出力したい項目

出力スプレッドシートの列名を入力します:プロバイダー名患者名診療日収入コードCPTコードICD-10診断コードNDCサービス説明単位数請求額。UB-04病院請求書の場合、AIは4桁の数字(0300、0301、0250)のように見える列から収入コードを、5桁の手技識別子(80053、85025、99284)を保持する列からCPTコードを読み取ります。CPTコードが説明文に埋め込まれている診療所請求書の場合は、説明段落内の5桁のコードを特定します。NDCコードのある薬局明細行では、CPTコードや収入コードとともに11桁の医薬品識別子を見つけます。「検査 — 一般」のようなカテゴリヘッダー行は視覚的なセクション区切りとして認識され、抽出対象から除外されます。1つの列定義でプロバイダー混在のバッチ全体をカバーします — 形式ごとの設定は不要です。

出力 — 1スプレッドシート、明細行ごとに1行、各コードは専用列に

医療請求書の明細行ごとに1行を割り当てたExcelファイルをダウンロード。CPTコード、レベニューコード、ICD-10診断コード、NDCコードはそれぞれ専用列に配置 — コードの統合や種別混在はありません。施設名列には各行の元となった医療機関が表示されます。薬局明細行はNDC列にNDCコードが表示され、非薬局行は空白 — 行種別ごとに全列を埋める必要のない行レベルスキーマを保持。EOBを一緒にアップロードした場合、保険支払額と調整データが隣接列に行として出力され、Excel上で請求書とEOBの横並び照合が可能。XLSX、CSV、JSON形式でエクスポート。

最適な使用シーンと結果確認のポイント

大手病院システムや診療管理プラットフォームの標準的な医療請求書式では、高い抽出精度を発揮します。大規模な一括処理を行う前に、いくつかの文書条件やエッジケースを理解しておくことをお勧めします。

確実に処理

デジタル生成の病院請求書・医療機関請求書。Epic、Cerner、MeditechなどEHR/請求プラットフォームのPDFはほぼ完全に抽出可能。これらのネイティブデジタル文書には、レベニューコード、CPTコード、サービス内容、料金が明確にラベル付けされた列で記載されています。

1回の抽出で3種類のコード体系に対応。CPT、レベニューコード、ICD-10、NDCにそれぞれ別の列を定義。AIが各コードの構造を識別し、4種類すべてを正しい列名に同時に抽出します。二次処理や後処理は不要です。

複数医療機関の一括処理。複数の病院、診療所、薬局の請求書を一度にアップロード。AIが文書ヘッダーから各医療機関を識別し、施設ごとのレイアウトを読み取り、すべての明細を医療機関名列でフィルタリング可能な1つのスプレッドシートに統合します。

異種文書の一括処理(請求書+EOB)。医療請求書と給付明細書(EOB)を同じバッチでアップロードし、Excelで横並びに照合。医療機関の請求額と、EOBの承認額・保険支払額を隣接行に表示します。

要確認ケース

小規模クリニックの感熱紙レシート(経年劣化) 一部の診療所では感熱プリンターで領収書を発行しており、特に高温環境で保管されると印字が薄くなります。コントラストが低い感熱紙では、AIがCPTコードの数字を誤読する可能性があります(例:99213と99214)。印字が薄い、または発行から6ヶ月以上経過した請求書はコードを確認してください。

訂正・再請求があり、元の金額と修正後の金額が混在する請求書 修正後の医療請求書では、元の金額と修正後の金額が別々の行に記載されたり、スキャン文書上で手書き訂正が加えられている場合があります。AIは読み取った内容をそのまま抽出します。特に同じページに両方の金額が曖昧に表示されている場合は、修正後の値(元の値ではない)が出力されていることを確認してください。

診断コードが1ページ目、対応するCPTコードが3ページ目に記載された複数ページの請求書 一部の病院の請求システムでは、ICD-10診断コードを表紙ページに、対応するCPTコードの明細を後続ページに印刷します。AIは文書全体を読み取りますが、現時点ではページ間の診断コードと処置コードの相互参照マップを保持せず、各行の抽出は独立して行われます。ICD-10コードとCPT明細のマッチングが必要な場合は、抽出後に診断コード列とCPTコード列を照合し、ページ間のマッピングが正しいことを確認してください。

筆記体や非標準的な略語が多い手書きの医療請求書 診察メモが請求書を兼ねており、欄外にCPTコードが走り書きされている場合、筆記体が極端に崩れていたり、特殊な医療略語が使われていると正確に抽出できません。AIは印刷されたCPTコードや明確な数字は信頼性高く処理しますが、筆記体や非標準的な略語では精度が低下します。提供者が常に手書きの請求書を送ってくる場合は、印刷版を依頼するか、手書きのフィールドを手動で入力し直すことで抽出エラーを防げます。

よくある質問

CPTコード、レベニューコード、ICD-10診断コードを、それぞれ別の列に同時に抽出できますか?

はい。コードの種類ごとに「CPTコード」「レベニューコード」「ICD-10診断」「NDC」など個別の列を定義すれば、AIは画面上の固定位置ではなく、それぞれの意味を理解してコードを特定します。CPTコードは5桁の処置識別子、レベニューコードは4桁の場所/部門コード、ICD-10コードは英数字の診断文字列、NDCコードは薬剤明細にのみ現れる11桁の医薬品識別子です。各コードは出力の正しい列名に振り分けられます。これは、フォーム上の「コード」列を読み取ってすべてを1つのフィールドにまとめてしまうテンプレートベースのツールとは根本的に異なります。つまり、費用が発生した場所、実施された処置、医学的必要性の区別が失われることはありません。

「検査」のようなカテゴリ見出しが明細の間にある場合、AIはどのように処理しますか?

病院の請求書には、「検査―一般」「薬剤―025Xの延長」「点滴療法―一般」といった太字のセクション見出しの下に費用がグループ化されていることがよくあります。これらは列をまたぐ視覚的な区分であり、実際の請求明細ではありません。座標ベースのOCRツールですべてのテキスト行をデータ行として読み取ると、これらの見出しがスプレッドシートに取り込まれ、説明はあるが金額がない行が生成され、データ構造が損なわれます。AIは文書の視覚的階層を読み取ります。見出しは通常、太字で中央揃え、または複数列にまたがり、隣接セルに数値データがありません。そのため、実際のサービス説明とコード、金額が関連付けられた行のみを抽出します。これは、人間の請求担当者がページをスキャンし、セクション見出しをスキップしてデータ行だけをコピーするのと同じ方法です。出力されるスプレッドシートには、見出しの混入がない、クリーンでフィルタリング可能な明細が含まれます。

フォーマットが異なる複数の病院やクリニックの医療費明細を、一度にまとめてアップロードできますか?

はい、可能です。大病院の明細書(UB-04表形式)、小規模クリニックの自由形式の請求書(CPTコードがテキスト内に記載)、外来手術センターのCMS-1500フォーム、薬局の明細書(各行にNDCコード)など、異なる形式の明細を同じバッチでアップロードできます。「プロバイダー名」「サービス日」「CPTコード」「レベニューコード」「ICD-10診断コード」「請求額」といった列を一度定義するだけで、AIが各書類の独自のレイアウトを読み取り、ページ上のどこに表示されていても該当するデータを識別し、すべてを1つのスプレッドシートに統合します。各行にはプロバイダー名の列が含まれるため、施設ごとにフィルタリングやグループ化が可能です。これこそが、実際に機能するバッチ処理と、プロバイダーごとに事前に仕分けし、フォーマットごとに個別の抽出設定が必要なバッチ処理(テンプレートベースのツールに必要な作業であり、複数プロバイダー間の調整に時間がかかる原因)との違いです。

請求額だけでなく、患者負担額、保険支払額、調整額も抽出できますか?

プロバイダーからの医療請求書には、通常、請求額、保険調整額、患者負担額が別々のセクション(多くの場合、別のページ)に記載されています。「請求額」「保険支払額」「保険調整額」「患者負担額」の列を定義すれば、AIが各セクションを読み取り、正しい金額を対応する列にマッピングします。最も完全な調整を行うには、同じバッチでEOB(給付明細書)をプロバイダー請求書と一緒にアップロードしてください。AIはプロバイダー明細書から請求額を、EOBから承認額、保険支払額、患者負担額を抽出し、同じスプレッドシートの隣接する行に配置して比較できるようにします。これは、プロバイダーが請求した金額と保険会社が処理した金額が一致するかを確認する必要がある、審査担当者や患者支援者にとって特に有用です。

抽出精度はどの程度ですか?— ソース文書とCPTコードを照合する必要はありますか?

主要なEHR・請求プラットフォーム(Epic、Cerner、Meditech、eClinicalWorks、Athenahealth)から生成されたデジタルPDFの場合、CPTコード抽出精度は98%を超えます。主なリスクは数字の読み間違いではなく、非標準文書における文脈上のエラーです。例えば、かすれた感熱紙レシートでCPTコードの数字がほとんど読めない場合、修正された請求書で取り消し線の入った元の金額と修正後の金額が隣接している場合、または複数ページの請求書でICD-10コードが表紙にあり、CPT明細が3ページ後に明示的な相互参照なしに表示される場合などです。高リスクの請求審査や監査業務では、出力スプレッドシートのCPTおよびレベニューコード列を簡単に目視確認することをお勧めします。値が期待されるのに空白のセル、異なるコード体系に属すると思われるコード(例:CPT列の4桁の数字)、または不自然な金額を探します。これは明細行ごとに数分ではなく、バッチごとに数秒で完了します。日常的な請求書追跡や経費記録では、抽出精度は体系的な検証なしで使用できるほど高いです。

📮 contact email: [email protected]