Data Science/Python

Document AI 구축 방법 (feat. 오픈소스를 활용한 예제)

En.Lee 2025. 2. 24. 08:02
반응형

Document AI 구축 방법

Document AI는 문서를 자동으로 인식하고 처리하는 인공지능 기술로, OCR(광학 문자 인식), 자연어 처리(NLP), 머신러닝 등을 활용하여 문서 데이터를 자동화할 수 있습니다. 이번 글에서는 Document AI를 구축하는 방법과 예제 코드를 소개하겠습니다.

 

1. Document AI 구축 방법

 

Document AI를 구축하기 위해서는 다음과 같은 단계가 필요합니다.

 

📌 1) 데이터 준비 및 수집

 

Document AI가 처리할 문서를 준비합니다.

스캔된 PDF, 이미지(JPG, PNG), 텍스트 파일 등

라벨링된 문서 데이터 (OCR 학습을 위한 데이터셋)

 

예제 데이터:

✅ 영수증, 계약서, 신분증, 보험 청구서 등


📌 2) OCR(광학 문자 인식) 적용

 

OCR(Optical Character Recognition)을 사용하여 문서에서 텍스트를 추출합니다.

Google Vision OCR API

Tesseract OCR (오픈소스)

Amazon Textract

Azure Form Recognizer

 

💡 예제 코드 (Python + Tesseract OCR)

import pytesseract
from PIL import Image

# Tesseract 설치 경로 설정 (Windows 사용자만 필요)
# pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe'

# 이미지 파일 열기
image = Image.open('document_sample.jpg')

# OCR 수행
text = pytesseract.image_to_string(image)

# 출력 결과 확인
print(text)

결과: 이미지에서 텍스트를 추출하여 콘솔에 출력


📌 3) 자연어 처리(NLP)로 의미 분석

 

OCR을 통해 추출된 텍스트에서 중요한 정보를 찾기 위해 NLP를 적용합니다.

Named Entity Recognition (NER): 특정 정보(이름, 날짜, 주소 등) 추출

텍스트 요약: 긴 문서를 짧은 요약문으로 변환

키워드 추출: 문서의 핵심 내용을 자동 분석

 

💡 예제 코드 (Python + spaCy NER)

import spacy

# spaCy 모델 로드 (사전 학습된 영어 모델)
nlp = spacy.load("en_core_web_sm")

# 예제 문서
text = "John Doe signed a contract with ABC Corp on March 5, 2023."

# 문서 분석
doc = nlp(text)

# 엔터티 추출
for ent in doc.ents:
    print(f"{ent.text} - {ent.label_}")

결과:

John Doe - PERSON  
ABC Corp - ORG  
March 5, 2023 - DATE  

👀 특정한 정보를 자동으로 추출하는 기능 구현 가능


📌 4) 문서 자동 분류 및 데이터 저장

 

추출된 텍스트를 기반으로 문서를 자동 분류합니다.

영수증, 계약서, 송장 등 문서 유형을 구분

머신러닝 모델을 활용하여 문서 내용을 카테고리화

 

💡 예제 코드 (Scikit-learn을 사용한 문서 분류)

from sklearn.feature_extraction.text import CountVectorizer
from sklearn.naive_bayes import MultinomialNB

# 샘플 문서 데이터
documents = [
    "This is an invoice for your recent purchase.",
    "Your contract has been approved and signed.",
    "Here is your receipt for the payment."
]

# 문서 레이블 (0: 송장, 1: 계약서, 2: 영수증)
labels = [0, 1, 2]

# 텍스트 벡터화
vectorizer = CountVectorizer()
X = vectorizer.fit_transform(documents)

# 분류 모델 학습
model = MultinomialNB()
model.fit(X, labels)

# 새로운 문서 예측
new_doc = ["This is your signed contract."]
X_new = vectorizer.transform(new_doc)
prediction = model.predict(X_new)

print(f"문서 유형 예측: {prediction}")

결과:

문서 유형 예측: [1]  # 계약서로 분류됨

🎯 문서의 유형을 자동으로 분류하는 기능 구현 가능


📌 5) 클라우드 API 및 데이터베이스 연동

 

Document AI를 실무에서 활용하려면 클라우드 서비스 및 데이터베이스와 연동하여 자동화해야 합니다.

 

Google Document AI API 사용 예제 (Google Cloud Vision OCR)

Google Document AI API는 $1.5 (매월 1000건까지 무료)

from google.cloud import vision

client = vision.ImageAnnotatorClient()

with open("document_sample.jpg", "rb") as image_file:
    content = image_file.read()

image = vision.Image(content=content)
response = client.text_detection(image=image)

print(response.text_annotations[0].description)

🔹 Google Cloud Vision API를 사용하여 문서에서 텍스트를 자동 추출

 

데이터베이스(MySQL) 저장 예제

import mysql.connector

# MySQL 연결
conn = mysql.connector.connect(
    host="localhost",
    user="root",
    password="password",
    database="document_ai"
)

cursor = conn.cursor()

# OCR로 추출한 텍스트 저장
text = "John Doe signed a contract on March 5, 2023."
cursor.execute("INSERT INTO documents (content) VALUES (%s)", (text,))
conn.commit()

cursor.close()
conn.close()

🔹 문서 데이터를 데이터베이스에 저장하여 관리 가능


6. Document AI 구축 예제 – 영수증 자동 분석기

 

💡 목표: OCR과 NLP를 이용하여 영수증에서 날짜, 총 금액, 상호명 추출

import pytesseract
import spacy
from PIL import Image

# OCR 실행
image = Image.open("receipt_sample.jpg")
text = pytesseract.image_to_string(image)

# NLP 적용 (스파이시 모델 로드)
nlp = spacy.load("en_core_web_sm")
doc = nlp(text)

# 영수증에서 날짜, 총 금액, 상호명 추출
for ent in doc.ents:
    if ent.label_ in ["DATE", "MONEY", "ORG"]:
        print(f"{ent.label_}: {ent.text}")

출력 예시:

ORG: Starbucks  
DATE: March 5, 2023  
MONEY: $12.50  

👀 영수증 자동 분석 시스템 구축 가능

 

결론 – Document AI를 활용한 자동화 시스템 구축 가능!

 

Document AI를 구축하면 문서 분석 및 처리 자동화가 가능하며, OCR + NLP + 머신러닝을 조합하여 기업의 업무 효율성을 극대화할 수 있습니다.

 

🚀 Document AI 적용 가능 분야:

✔ 금융 – 대출 신청서 자동 검토

✔ 의료 – 환자 기록 디지털화

✔ 법률 – 계약서 자동 분석

✔ 회계 – 영수증 및 세금 문서 처리

반응형