Phase 6 · 회계 Document AI 실무

마법의 스크립트 한 방으로 Excel 보고서 생성하기

매월 거래처별로 수십 장씩 날아오는 엑셀 파일들. 열고 복사해서 붙여넣고, 오타 고치고, 피벗 돌려서 보고서 만들고... 이 지겨운 수작업을 공인회계사들이 왜 직접 해야 할까요?
이번 단계에서는 지정된 폴더에 엑셀을 몰아넣기만 하면 자동으로 취합, 집계, 증감률 계산, 조건부 서식과 차트가 포함된 멀티 시트 보고서를 찍어내는 강력한 파이썬 스크립트를 직접 코딩합니다.

예상 학습 시간 : 400분
난이도 : ★★★★☆
사전 단계 : 회계 데이터 수집 자동화 (Step 38)
다음 단계 : 40단계 - 증빙 이미지(영수증) AI 처리 (예정)
01

지긋지긋한 복붙(Ctrl+C, Ctrl+V)의 종말

공인회계사 대상 오프라인 파이썬 교육을 하면, 현업 회계사분들의 눈이 가장 반짝거리는 순간이 바로 이 파트입니다.

[사람이 할 때] ABC_8월.xlsx 열기 -> A1:H50 복사 -> 통합문서 붙여넣기 DEF_8월.xlsx 열기 -> A1:H30 복사 -> 통합문서 밑에 붙여넣기... (실수 유발) ↓ [Python이 할 때] /data 폴더 스캔 -> 모든 엑셀 병합(0.5초) -> 피벗/집계(0.1초) -> 보고서.xlsx 생성
02

다수의 Excel 파일 한 번에 싹 다 취합하기

pathlib 라이브러리를 사용해 특정 폴더를 순회하며 엑셀을 읽어 pd.concat()으로 병합합니다. 어떤 파일에서 문제가 터졌는지 try-except로 예외를 기록하는 것이 실무의 핵심입니다.

🐍 python
from pathlib import Path
import pandas as pd

folder = Path("./data")
all_data = []

for file in folder.glob("*.xlsx"):
    try:
        df = pd.read_excel(file)
        df["source_file"] = file.name  # 출처 기록
        df["customer"] = file.stem.split("_")[0] # 파일명(ABC_8월.xlsx)에서 거래처 추출
        all_data.append(df)
    except Exception as e:
        print(f"{file.name} 오류: {e}")

result_df = pd.concat(all_data, ignore_index=True)
03

거래처/계정과목/월별 자동 집계

Pandas의 가장 강력한 기능인 groupby를 사용하여 다양한 뷰(View)의 데이터를 생성합니다.

# 1. 거래처 + 계정과목별 집계
summary_account = df.groupby(["customer", "account"])["amount"].sum().reset_index()

# 2. 월별 집계 (날짜에서 월 추출)
df["month"] = df["transaction_date"].dt.to_period("M")
monthly = df.groupby("month")["amount"].sum().reset_index()
04

MoM 증감률 계산과 이상징후 포착

회계감사나 결산 검토 시 '튀는 숫자'를 찾아내는 것이 중요합니다. shift(1) 함수로 전월 데이터를 가져와 증감률(%)을 구합니다.

monthly["previous"] = monthly["amount"].shift(1)
monthly["change_rate"] = (monthly["amount"] - monthly["previous"]) / monthly["previous"] * 100

# 전월 대비 30% 이상 급등/급락한 이상 거래만 필터링!
anomaly = monthly[monthly["change_rate"].abs() >= 30]
05

Pandas로 피벗테이블 만들기

엑셀의 꽃, 피벗테이블도 파이썬으로 1줄이면 완성됩니다.

pivot = pd.pivot_table(
    df,
    index="customer",     # 행
    columns="account",    # 열
    values="amount",      # 값
    aggfunc="sum",        # 집계방식
    fill_value=0
)
06

xlsxwriter: 다중 시트, 서식, 차트가 포함된 최종 보고서

데이터 가공이 끝났다면, 회계사나 고객이 보기 좋은 '예쁜 엑셀 파일'로 만들어야 합니다. xlsxwriter 엔진을 사용하면 엑셀 파일에 시트를 나누고, 틀 고정, 숫자 콤마 형식, 조건부 서식, 심지어 그래프 차트까지 코드로 그려 넣을 수 있습니다.

with pd.ExcelWriter("accounting_report.xlsx", engine="xlsxwriter") as writer:
    # 1. 시트별로 데이터 밀어넣기
    df.to_excel(writer, sheet_name="원본데이터", index=False)
    monthly.to_excel(writer, sheet_name="월별분석", index=False)
    
    # 2. 서식 및 차트 객체 획득
    workbook = writer.book
    worksheet = writer.sheets["월별분석"]
    
    # 3. 30% 이상 증감한 셀 빨간색 강조 (조건부 서식)
    worksheet.conditional_format("D2:D100", {"type": "cell", "criteria": ">=", "value": 30})
    
    # 4. 차트 생성 및 삽입
    chart = workbook.add_chart({"type": "column"})
    chart.add_series({"categories": "=월별분석!$A$2:$A$13", "values": "=월별분석!$B$2:$B$13"})
    worksheet.insert_chart("F2", chart)
07

AI와 Python의 완벽한 분업 체계

계산은 Python, 해석은 AI

수십만 건의 거래 내역을 AI에게 통째로 던지며 "분석해 줘"라고 하면 속도도 느리고 거짓말(환각)을 할 수 있습니다.

대신, 위에서 만든 파이썬 스크립트가 "광고선전비가 전월 대비 +72% 증가함" 이라는 팩트(JSON)만 깔끔하게 도출한 뒤 AI에게 던지면, AI는 "전월 대비 72% 증가한 광고선전비 지출에 대해 해당 거래처의 세금계산서 수취 여부를 우선 검토해야 합니다."라는 전문가 수준의 자연어 보고서만 얹어주는 환상적인 협업이 완성됩니다.

08

40단계 예고: 영수증/세금계산서 AI OCR 추출기

39단계에서 정형화된 "엑셀" 파일을 자동화하는 마법을 배웠습니다.

하지만 실제 회계 실무에서는 여전히 '구겨진 종이 영수증 사진', '스캔된 세금계산서 PDF' 등 비정형 문서가 쏟아집니다.
다음 40단계에서는 이러한 비정형 이미지에서 텍스트를 뽑아내고, AI 모델을 통해 거래처, 공급가액, 부가세 정보를 자동으로 추출(Information Extraction)하는 Document AI 아키텍처를 구현해 보겠습니다.

Step 38 : OCR 데이터 수집 파이프라인 Phase 6 공사중