반응형
이 프로젝트는 영수증이나 송장(invoices)에서 데이터를 자동으로 추출하고 정리하여 회계 작업을 간소화하는 시스템을 만드는 것입니다!
✨ 이 시스템이 수행하는 주요 작업은 다음과 같아요:
📜 1. 스캔된 영수증이나 송장에서 텍스트 추출
📊 2. 추출된 데이터를 분석하고 필요한 정보(날짜, 금액, 공급업체 이름 등)를 구조화
💾 3. 데이터를 엑셀 파일 또는 데이터베이스에 자동 저장
💻 기술 스택
🟢 Python
🟡 Tesseract OCR: 이미지에서 텍스트를 추출
🔵 Hugging Face Transformers: 자연어 처리를 활용해 데이터 분석
🟠 Pandas: 데이터 정리 및 엑셀 파일 저장
🔴 Flask: 간단한 웹 인터페이스 제공 (옵션)
🎯 기능
✅ PDF, JPG, PNG 형태의 영수증/송장을 업로드
✅ 자동으로 아래 정보를 추출:
- 🏢 공급업체 이름
- 📅 날짜
- 📄 송장 번호
- 💰 총 금액
✅ 정리된 데이터를 엑셀 파일로 저장하거나 데이터베이스에 삽입
🛠️ 단계별 구현
1️⃣ 필요한 라이브러리 설치
아래 명령어로 필요한 Python 라이브러리를 설치하세요:
pip install pytesseract pandas transformers flask
pip install pdf2image PyPDF2 openpyxl
2️⃣ Tesseract OCR 설치
📌 Tesseract OCR 설치 가이드를 참고하세요.
📌 설치 후, 실행 파일 경로를 시스템 환경 변수에 추가하세요.
3️⃣ 텍스트 추출 코드
🖼️ 이미지나 PDF에서 텍스트를 추출하는 코드는 아래와 같습니다:
from pdf2image import convert_from_path
import pytesseract
from PIL import Image
# 이미지에서 텍스트 추출
def extract_text_from_image(image_path):
return pytesseract.image_to_string(Image.open(image_path))
# PDF에서 텍스트 추출
def extract_text_from_pdf(pdf_path):
pages = convert_from_path(pdf_path)
text = ""
for page in pages:
text += pytesseract.image_to_string(page)
return text
4️⃣ 추출된 텍스트 분석
🤓 Hugging Face의 NER 모델을 사용해 데이터를 분석합니다:
from transformers import pipeline
# 사전 학습된 Named Entity Recognition (NER) 모델 불러오기
ner_pipeline = pipeline('ner', model='model')
def extract_entities(text):
entities = ner_pipeline(text)
data = {'공급업체': '', '날짜': '', '금액': ''}
for entity in entities:
if entity['entity'] == 'ORG': # 조직 이름
data['공급업체'] = entity['word']
elif entity['entity'] == 'DATE': # 날짜
data['날짜'] = entity['word']
elif entity['entity'] == 'MONEY': # 금액
data['금액'] = entity['word']
return data
5️⃣ 엑셀 파일로 저장
📊 데이터를 엑셀 파일로 저장하는 방법은 다음과 같습니다:
import pandas as pd
# 데이터를 엑셀로 내보내기
def export_to_excel(data, filename='output.xlsx'):
df = pd.DataFrame(data, index=[0]) # 딕셔너리를 DataFrame으로 변환
df.to_excel(filename, index=False)
6️⃣ 간단한 Flask 웹 인터페이스 (옵션)
🌐 사용자가 파일을 업로드할 수 있는 간단한 웹 인터페이스를 추가할 수도 있어요:
from flask import Flask, request, jsonify
app = Flask(__name__)
@app.route('/')
def home():
return """
<h1>AI 회계 어시스턴트</h1>
<form action="/upload" method="post" enctype="multipart/form-data">
<input type="file" name="file">
<button type="submit">업로드</button>
</form>
"""
@app.route('/upload', methods=['POST'])
def upload_file():
file = request.files['file']
if file:
text = extract_text_from_image(file) # PDF의 경우 extract_text_from_pdf() 사용
data = extract_entities(text) # 텍스트 분석
export_to_excel(data) # 엑셀 파일로 저장
return jsonify(data) # JSON 형식으로 결과 반환
return "파일 업로드 실패!"
🚀 결과물
- 📤 사용자가 영수증/송장 업로드
- 🤖 AI가 자동으로 텍스트를 추출하고 데이터를 구조화
- 📊 정리된 데이터를 엑셀 파일로 저장
💡 확장 아이디어
- 데이터베이스와 연결해 대규모 회계 데이터를 관리
- 추가적인 데이터 분석 (예: 월별 지출 추이 📈, 공급업체별 총 금액 💰)
- 사용자 인터페이스(UI) 개선 🌟
이 프로젝트로 AI를 활용한 회계 자동화를 직접 구현해 보세요! 💼✨
반응형
'AI 공부 > ML & DL' 카테고리의 다른 글
머신러닝 알고리즘 가이드: 종류와 강점, 약점 분석 📊 (3) | 2024.12.29 |
---|---|
[머신러닝] 머신러닝 성능 200% 올리는 비법! 🤖✨ 피처 엔지니어링 꿀팁 공개! (1) | 2024.12.08 |
[Deep Learning] Self-Attention 메커니즘 이해하기 📘🤖 (1) | 2024.06.13 |
[Deep Learning] LSTM (Long Short-Term Memory) 이해하기 📘🤖 (1) | 2024.06.12 |
[Deep Learning] 딥러닝 RNN (Recurrent Neural Network)의 기초 이해하기 (1) | 2024.06.11 |