
AI에 전적으로 의지하여 가계부 앱을 추가 개발하기: OCR 구현 ①
요약
AI를 활용하여 가계부 앱에 OCR(광학 문자 인식) 기능을 구현하는 과정을 다룹니다. Tesseract OCR과 OpenCvSharp을 사용하여 이미지 선택부터 텍스트 추출, 데이터 반영까지의 워크플로우를 설명합니다.
핵심 포인트
- Tesseract OCR과 OpenCvSharp을 활용한 OCR 구현 방법
- OpenCV를 이용한 이미지 전처리 및 보정 기법
- 점포별 정규 표현식을 활용한 인식 정밀도 향상 전략
- 실무 적용을 위한 OCR 결과 DB 연동 및 AI 보정 제언
지난번에는 가계부 앱의 설계와 화면 작성을 진행했습니다. (AI가 했습니다)
이번부터는 OCR (광학 문자 인식) 구현을 진행합니다.
"OCR 기능을 구현하고 싶어"
"코드를 생성해 줘"
OCR 기능의 최소한의 구현 예시입니다.
다음 구성으로 「이미지 선택 → OCR 실행 → 텍스트 추출 → 가설 분석 → 화면 반영」까지 동작합니다.
전제로 다음을 사용합니다.
- OCR: Tesseract OCR
- 이미지 처리: OpenCvSharp
설치해 주세요.
Install-Package Tesseract
Install-Package OpenCvSharp4
Install-Package OpenCvSharp4.runtime.win
다음에서 jpn.traineddata를
획득해 주세요.
배치 위치:
실행 폴더
└─ tessdata
└─ jpn.traineddata
예시:
bin
└─ Debug
└─ tessdata
...
이미지 선택
↓
OpenCV 전처리
...
using System;
using System.Collections.Generic;
namespace KakeiboApp.Services
...
using OpenCvSharp;
using System;
using System.Globalization;
...
다음 필드 추가.
private string _selectedImagePath;
private void BtnSelectImage_Click(object sender, EventArgs e)
{
OpenFileDialog dialog = new OpenFileDialog();
...
private void BtnOcr_Click(object sender, EventArgs e)
{
if (string.IsNullOrWhiteSpace(_selectedImagePath))
...
private void ApplyOcrResult(OcrResult result)
{
if (result.Date.HasValue)
...
최소한의 구현이라 정밀도는 그리 높지 않습니다.
실운용 레벨에서는 다음 사항이 중요합니다.
영수증 사선 촬영 대응.
HoughLines
minAreaRect
로 보정.
MedianBlur
MorphologyEx
추가.
어두운 이미지 대책.
AdaptiveThreshold
권장.
실제로는:
- 세븐 (Seven-Eleven)
- 파미마 (FamilyMart)
- 이온 (AEON)
- 세이유 (Seiyu)
등에서 레이아웃이 다릅니다.
OCR 후에:
점포명 판정
↓
점포별 Regex (정규 표현식)
하는 편이 정밀도가 높습니다.
- OCR 프리뷰
- 원본 이미지 표시
- OCR 신뢰도 표시
- OCR 재실행
- 상품 카테고리 자동 판정
- 중복 상품 통합
- 소비세 자동 판정
- OCR 로그 저장
- AI 보정
| 문제 | 원인 |
|---|---|
| 8→B | 이진화 부족 |
| ... |
다음은 아래 구현을 추천합니다.
- SQLite 저장
- OCR 결과 DB 등록
- 지출 목록 연동
- OCR 정밀도 개선
- 상품 카테고리 마스터
- AI 분류
- Excel 출력
- 월별 집계 그래프
다음에도 OCR 개선을 실시하겠습니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Qiita AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기