FastAPI 및 MongoDB를 활용한 Didit 주소 증명 통합 (KO)
FastAPI 백엔드 및 MongoDB와 Didit의 주소 증명(PoA) 확인을 통합하여 확장 가능한 KYC 시스템을 구축하는 방법을 알아보세요. 이 가이드는 환경 설정, 문서 업로드 처리, 확인 처리 방법을 다룹니다.

원활한 통합Didit의 주소 증명 API를 FastAPI 및 MongoDB와 통합하여 강력하고 확장 가능한 KYC 백엔드를 구축하고 확인 워크플로우를 간소화하십시오.
자동화된 확인Didit의 AI 기반 기능을 활용하여 주소 문서의 자동 추출, 유효성 검사 및 진위 확인을 통해 수동 검토를 줄이고 정확성을 향상시킵니다.
구성 가능한 워크플로우Didit의 유연한 설정을 활용하여 이름 불일치 또는 문서 품질 문제와 같은 다양한 확인 결과에 대한 사용자 지정 작업을 정의하여 다양한 규제 요구 사항을 준수하도록 합니다.
확장 가능하고 비용 효율적Didit는 무료 핵심 KYC 및 성공적인 확인당 지불 가격 모델을 갖춘 모듈식, 개발자 우선 접근 방식을 제공하여 확장 가능한 신원 확인을 찾는 모든 규모의 비즈니스에 이상적인 선택입니다.
KYC에서 주소 증명 확인의 과제
주소 증명(PoA) 확인은 금융 서비스에서 온라인 마켓플레이스에 이르기까지 다양한 산업에서 KYC(Know Your Customer) 프로세스의 중요한 구성 요소입니다. 이는 사용자의 실제 거주지를 확인하고 사기를 방지하며 자금 세탁 방지(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 라이브러리는 MongoDB와의 비동기 상호 작용을 가능하게 하여 고성능 FastAPI 애플리케이션에 중요합니다.
Didit의 주소 증명 API 통합
Didit의 주소 증명 API를 사용하면 문서 이미지 또는 PDF를 확인을 위해 제출하고, 주소 정보를 추출 및 유효성 검사하고, 진위 확인을 수행하고, 구조화된 데이터를 반환할 수 있습니다. 이 프로세스는 Didit의 AI 기반 아키텍처 덕분에 고도로 자동화되고 정확하도록 설계되었습니다.
1. Didit에 문서 전송
문서 업로드를 수락하고 Didit에 전달하기 위한 FastAPI 애플리케이션에 엔드포인트가 필요합니다. 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 확인을 독립형 서비스로 쉽게 통합하거나 ID 확인 및 AML 심사 및 모니터링과 같은 다른 Didit 제품과 결합하여 완벽한 KYC 워크플로우를 구축할 수 있습니다.
- AI 기반 정확성: 당사의 고급 AI 및 머신러닝 알고리즘은 데이터 추출 및 사기 탐지에서 높은 정확성을 보장하여 오탐 및 오음성을 최소화합니다.
- 구성 가능한 워크플로우: 이름 불일치, 문서 품질 문제 또는 의심스러운 조작과 같은 다양한 위험 시나리오에 대한 사용자 지정 규칙 및 작업을 API 또는 노코드 비즈니스 콘솔을 통해 직접 정의할 수 있습니다.
- 개발자 우선 경험: 즉각적인 샌드박스, 포괄적인 공개 문서 및 깔끔한 API를 통해 개발자는 Didit를 빠르고 효율적으로 통합할 수 있습니다.
- 비용 효율적인 확장: Didit는 무료 핵심 KYC 및 성공적인 확인당 지불 모델을 제공하여 설정 비용을 없애고 사용한 만큼만 지불하도록 보장하여 확장 가능한 운영에 이상적입니다.
Didit를 활용함으로써 기업은 복잡한 인프라 또는 수동 검토의 부담 없이 신뢰를 자동화하고 규정 준수를 간소화하며 우수한 사용자 온보딩 경험을 제공할 수 있습니다.
시작할 준비가 되셨습니까?
Didit의 작동 방식을 보고 싶으십니까? 지금 무료 데모를 받으세요.
Didit의 무료 티어로 무료로 신원 확인을 시작하세요.