본문 바로가기
Data Science/Python

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

by En.Lee 2025. 2. 24.
반응형

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 적용 가능 분야:

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

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

✔ 법률 – 계약서 자동 분석

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

반응형