FastAPIとMongoDBでDiditの住所確認を統合する方法 (JA)
Diditの住所確認(PoA)をFastAPIバックエンドとMongoDBに統合し、スケーラブルなKYCシステムを構築する方法を学びましょう。このガイドでは、環境設定、書類アップロードの処理、検証処理について説明します。.

シームレスな統合Diditの住所確認APIをFastAPIとMongoDBに統合し、堅牢でスケーラブルなKYCバックエンドを構築し、検証ワークフローを効率化します。
自動検証DiditのAIネイティブな機能を利用して、住所書類の自動抽出、検証、真正性チェックを行い、手動レビューを削減し、精度を向上させます。
設定可能なワークフローDiditの柔軟な設定を活用し、氏名の不一致や書類品質の問題など、さまざまな検証結果に対するカスタムアクションを定義することで、多様な規制要件への準拠を確実にします。
スケーラブルで費用対効果が高いDiditは、無料のコアKYCと成功したチェックごとの従量課金モデルにより、モジュール式で開発者優先のアプローチを提供しており、スケーラブルな本人確認を求めるあらゆる規模の企業にとって理想的な選択肢です。
KYCにおける住所確認の課題
住所確認(PoA)は、金融サービスからオンラインマーケットプレイスまで、さまざまな業界における本人確認(KYC)プロセスの重要な要素です。ユーザーの物理的な居住地を確認し、詐欺防止、マネーロンダリング対策(AML)規制への準拠、信頼構築に不可欠です。しかし、公共料金の請求書、銀行取引明細書、政府発行の書類を手動でレビューすることは、時間がかかり、人的エラーが発生しやすく、スケーラブルではありません。企業は、PoA検証の複雑さを処理しつつ、スムーズなユーザーエクスペリエンスを維持するために、堅牢で自動化された安全なソリューションを必要としています。
従来のPoAソリューションは、複雑な統合、高額なセットアップコスト、厳格なワークフローを伴うことがよくあります。そこで、Diditのような最新のAIネイティブな本人確認プラットフォームが輝きを放ちます。これは、統合を簡素化し、強力で自動化された検証機能を提供する開発者優先のアプローチを提供します。Diditの住所確認APIと、FastAPIのようなスケーラブルなバックエンド、MongoDBのような柔軟なNoSQLデータベースを組み合わせることで、企業は非常に効率的で準拠したKYCシステムを構築できます。
FastAPIとMongoDB環境のセットアップ
まず、FastAPIアプリケーションとMongoDBインスタンスが必要です。FastAPIは高いパフォーマンスと使いやすさのために選ばれ、MongoDBは多様なドキュメントタイプと検証レポートを保存する柔軟性を提供します。基本的なセットアップは次のとおりです。
1. FastAPIアプリケーションのセットアップ
まず、FastAPIとUvicornをインストールします。
pip install fastapi uvicorn python-multipart motor
main.pyファイルを作成します。
from fastapi import FastAPI, UploadFile, File, Form, HTTPException
from motor.motor_asyncio import AsyncIOMotorClient
from typing import Optional
import httpx
import os
app = FastAPI()
# MongoDB setup
MONGO_DETAILS = os.getenv("MONGO_DETAILS", "mongodb://localhost:27017")
client = AsyncIOMotorClient(MONGO_DETAILS)
database = client.didit_kyc
# Didit API Key
DIDIT_API_KEY = os.getenv("DIDIT_API_KEY")
if not DIDIT_API_KEY:
raise ValueError("DIDIT_API_KEY environment variable not set")
@app.on_event("startup")
async def startup_db_client():
app.mongodb_client = client
app.mongodb = database
@app.on_event("shutdown")
async def shutdown_db_client():
app.mongodb_client.close()
@app.get("/health")
async def health_check():
return {"status": "ok", "message": "FastAPI is running"}
2. MongoDB接続
MongoDBがローカルまたはクラウドサービスで実行されていることを確認してください。motorライブラリは、FastAPIアプリケーションの高性能に不可欠なMongoDBとの非同期インタラクションを可能にします。
Diditの住所確認APIの統合
Diditの住所確認APIを使用すると、書類画像またはPDFを検証のために送信し、住所情報を抽出し、検証し、真正性チェックを実行し、構造化されたデータを返すことができます。このプロセスは、DiditのAIネイティブなアーキテクチャのおかげで、高度に自動化され、正確であるように設計されています。
1. Diditへの書類送信
FastAPIアプリケーションに、書類のアップロードを受け付け、Diditに転送するエンドポイントが必要です。DiditのAPIは、さまざまな書類タイプ(PDF、JPEG、PNG、WebP、TIFF)をサポートし、強化された検証のための設定可能なパラメータを提供します。
@app.post("/verify-poa/")
async def verify_proof_of_address(
document: UploadFile = File(...),
expected_first_name: Optional[str] = Form(None),
expected_last_name: Optional[str] = Form(None),
expected_address: Optional[str] = Form(None),
expected_country: Optional[str] = Form(None),
poa_name_mismatch_action: str = Form("DECLINE"),
poa_document_issues_action: str = Form("DECLINE"),
poa_document_authenticity_action: str = Form("DECLINE"),
):
if not document.content_type.startswith(('image/', 'application/pdf')):
raise HTTPException(status_code=400, detail="Invalid document format. Only images and PDFs are allowed.")
DIDIT_POA_ENDPOINT = "https://verification.didit.me/v3/poa/"
headers = {"x-api-key": DIDIT_API_KEY}
# Prepare form data for Didit API
files = {'document': (document.filename, document.file.read(), document.content_type)}
data = {
"poa_name_mismatch_action": poa_name_mismatch_action,
"poa_document_issues_action": poa_document_issues_action,
"poa_document_authenticity_action": poa_document_authenticity_action,
}
if expected_first_name: data["expected_first_name"] = expected_first_name
if expected_last_name: data["expected_last_name"] = expected_last_name
if expected_address: data["expected_address"] = expected_address
if expected_country: data["expected_country"] = expected_country
async with httpx.AsyncClient() as client:
try:
didit_response = await client.post(DIDIT_POA_ENDPOINT, headers=headers, files=files, data=data, timeout=30.0)
didit_response.raise_for_status()
poa_result = didit_response.json()
# Store the result in MongoDB
verification_record = {
"filename": document.filename,
"user_id": "some_user_id", # Replace with actual user ID from your system
"timestamp": datetime.utcnow(),
"didit_response": poa_result,
"status": poa_result['poa']['status']
}
await app.mongodb["poa_verifications"].insert_one(verification_record)
return {"message": "POA verification initiated and result stored.", "result": poa_result}
except httpx.HTTPStatusError as e:
raise HTTPException(status_code=e.response.status_code, detail=f"Didit API error: {e.response.text}")
except Exception as e:
raise HTTPException(status_code=500, detail=f"An unexpected error occurred: {str(e)}")
このエンドポイントは、ファイルのアップロードを処理し、DiditのAPIへのリクエストを構築し、その後レスポンスを処理します。FastAPIのパフォーマンスにとって不可欠な、ノンブロッキングHTTPリクエストのためにhttpx.AsyncClientが使用されていることに注目してください。
2. Diditの住所確認レポートを理解する
Diditは、各PoA検証に関する包括的なJSONレポートを提供します。このレポートには以下が含まれます。
poa.status: 全体的な検証ステータス(承認済み、拒否済み、審査中)。poa.document_type: 自動検出された書類タイプ(例:UTILITY_BILL、BANK_STATEMENT)。poa.issuer、poa.issue_date、poa.expiration_date: 主要な書類詳細。poa.name_on_document、poa.poa_address、poa.poa_formatted_address、poa.poa_parsed_address: 抽出され構造化された住所情報。poa.warnings: 検出された警告や問題のリスト。例えば、POOR_DOCUMENT_QUALITY、NAME_MISMATCH_WITH_PROVIDED、SUSPECTED_DOCUMENT_MANIPULATIONなど。
これらの詳細な洞察により、高度な意思決定とエッジケースの自動処理が可能になります。poa_name_mismatch_actionやpoa_document_issues_actionなどのDiditの設定可能な検証設定により、システムが特定のリスク(氏名の不一致、書類品質の問題、操作の疑いなど)にどのように反応するかを定義でき、コンプライアンスを確保し、手動介入を削減できます。
MongoDBによる検証データの保存と管理
MongoDBは、その柔軟なドキュメントモデルにより、PoA検証結果を保存するのに最適な選択肢です。Diditからの完全なJSONレスポンスを直接保存できるため、事前定義されたスキーマなしで簡単にクエリと分析が可能です。この柔軟性は、検証要件が進化したり、新しいデータポイントが利用可能になったりする際に非常に重要です。
1. 検証レコードの保存
FastAPIの例で示されているように、didit_responseはpoa_verificationsコレクションに直接保存されます。このアプローチは、Diditによって提供されるすべての豊富なデータをキャプチャします。
2. 検証レコードのクエリ
MongoDBコレクションを簡単にクエリして、検証ステータス、レビューが必要なドキュメント、または特定のユーザーデータを取得できます。
from datetime import datetime
@app.get("/poa-verifications/{user_id}")
async def get_poa_history(user_id: str):
records = await app.mongodb["poa_verifications"].find({"user_id": user_id}).to_list(100)
if not records:
raise HTTPException(status_code=404, detail="No POA records found for this user.")
# MongoDB _id is an ObjectId, convert to string for JSON serialization
for record in records:
record["_id"] = str(record["_id"])
return records
@app.get("/poa-needs-review/")
async def get_poa_needs_review():
records = await app.mongodb["poa_verifications"].find({"status": "In Review"}).to_list(100)
for record in records:
record["_id"] = str(record["_id"])
return records
これらのエンドポイントを使用すると、ユーザーのPoA履歴を取得したり、手動レビューが必要なすべての検証を取得したりでき、複雑なコンプライアンスデータを管理するMongoDBの力を示しています。
Diditが提供するもの
Diditは、住所確認のような複雑な本人確認プロセスを簡素化するAIネイティブで開発者優先の本人確認プラットフォームを提供します。当社の住所確認製品は、さまざまな書類から主要な情報を抽出および検証することで、包括的な検証を提供します。書類タイプを自動的に検出し、住所を構造化された形式で解析し、操作の可能性を特定するために真正性チェックを実行します。Diditを利用することで、以下のメリットが得られます。
- モジュラーアーキテクチャ: PoA検証をスタンドアロンサービスとして簡単に統合したり、本人確認やAMLスクリーニング&モニタリングなど、他のDidit製品と組み合わせて完全なKYCワークフローを構築したりできます。
- AIネイティブな精度: 当社の高度なAIと機械学習アルゴリズムは、データ抽出と詐欺検出において高い精度を確保し、誤検出と誤否定を最小限に抑えます。
- 設定可能なワークフロー: 氏名の不一致、書類品質の問題、操作の疑いなど、さまざまなリスクシナリオに対して、当社のAPIまたはノーコードビジネスコンソールを通じて直接カスタムルールとアクションを定義できます。
- 開発者優先のエクスペリエンス: インスタントサンドボックス、包括的な公開ドキュメント、クリーンなAPIにより、開発者はDiditを迅速かつ効率的に統合できます。
- 費用対効果の高いスケーリング: Diditは無料のコアKYCと、成功したチェックごとの従量課金モデルを提供しており、セットアップ費用を排除し、使用した分だけ支払うため、スケーラブルな運用に最適です。
Diditを活用することで、企業は複雑なインフラストラクチャや手動レビューの負担なしに、信頼を自動化し、コンプライアンスを合理化し、優れたユーザーオンボーディングエクスペリエンスを提供できます。
始めますか?
Diditの動作をご覧になりたいですか? 今すぐ無料デモを入手してください。
Diditの無料ティアで無料で本人確認を開始しましょう。