수학의 신이라는 개인 프로젝트를 진행하고 있다. AI가 수학 문제를 이해하고 풀어내는 게 최종 목표인데, 이미지로 된 수학 문제를 어떻게 읽게 만드냐가 문제였다.
솔직히 처음엔 그냥 OCR 갖다 쓰면 되지 않나? 싶었다. 근데 막상 찾아보니까 수식 OCR은 일반 텍스트 OCR이랑 완전히 다른 문제라는 걸 알게 됐다. 그래서 네이버 커넥트재단 부스트코스의 수학 공식을 이해하는 딥러닝 모델(OCR) 심화 과정을 수강했다.
왜 수학 공식 OCR은 특별한가?
일반 OCR은 글자를 왼쪽에서 오른쪽으로 차례대로 읽는다. 수식은 그렇게 읽히지 않는다.
2차원 공간 구조: 분수는 위아래로, 첨자는 대각선 위아래로 배치된다.
문맥적 의미: 같은 기호라도 위치에 따라 의미가 달라진다 (e.g., x²와 x₂).
구조화된 출력: 단순 텍스트가 아니라 수식의 구조 전체를 표현하는 LaTeX 같은 형식으로 변환해야 한다.
결국 수학 공식 OCR은 이미지의 공간적 특징을 읽는 Computer Vision과, 그 구조를 순차 언어로 바꾸는 NLP가 같이 맞물려야 풀리는 문제였다.
강의 핵심 리뷰: 모델 아키텍처 파헤치기
강의는 이 문제를 해결하는 표준적인 모델 아키텍처를 깊이 다룬다. 나는 이 구조를 '눈', '뇌', '연결고리' 세 부분으로 나눠서 이해했다.
눈 (Eyes) - CNN 기반 Encoder
모델의 '눈' 역할은 CNN 기반 인코더가 담당한다. ResNet이나 VGG 같은 이미지 인식 모델로 수식 이미지에서 시각적 특징들을 뽑아낸다. 각 기호의 형태, 상대적 위치 같은 정보가 담긴 고차원 특징 맵이 결과물로 나온다.
뇌 (Brain) - Transformer 기반 Decoder
'뇌' 역할은 Transformer 기반 디코더가 맡는다. 인코더가 뽑은 이미지 특징 맵을 받아서 LaTeX 문자열 토큰을 하나씩 만들어낸다. 여기서 중요한 건 단순히 기호를 나열하는 게 아니라, 분수 기호 다음엔 분자가 와야 한다는 문법적, 구조적 관계를 학습해서 전체 수식을 논리적으로 재구성한다는 점이다.
연결고리 (Connection) - Attention Mechanism
'눈'과 '뇌'를 이어주는 핵심이 어텐션 메커니즘이다. 디코더가 LaTeX 토큰을 하나씩 생성할 때마다, 어텐션이 이미지의 어느 부분을 집중해서 봐야 할지 알려준다. 분자를 생성할 땐 이미지 위쪽에, 분모를 생성할 땐 아래쪽에 더 높은 주의를 기울이는 식이다. 복잡한 2차원 구조를 순차적 언어로 풀어내는 핵심 열쇠다.
프로젝트에 적용할 아이디어
강의를 듣고 나서 내 프로젝트 다음 단계가 꽤 구체적으로 정리됐다.
합성 데이터 생성 (Data Augmentation): 실제 수식 이미지 데이터는 구하기 어렵다. 다양한 LaTeX 수식을 무작위로 생성해서 이미지로 렌더링하고, 거기에 폰트, 노이즈, 회전 같은 변형을 가해 학습 데이터를 대량으로 만들 계획이다.
맞춤형 토크나이저 (Custom Tokenizer): 고등학교 미적분 같은 특정 도메인에 맞는 LaTeX 토크나이저를 따로 만들어야 한다는 걸 깨달았다. 이게 모델 학습 효율과 성능에 직결된다.
인식을 넘어 해석으로: OCR 모델이 LaTeX 문자열을 뱉는 건 '수학의 신' 프로젝트의 첫 단계일 뿐이다. 그다음은 이 LaTeX를 파싱해서 실제 연산 가능한 심볼릭 표현이나 연산 트리로 변환하는 모듈을 만드는 것이다.
마치며
강의 들으면서 수식 OCR이 일반 텍스트 인식이랑 완전히 다른 문제라는 걸 알게 됐고, 구조를 이해하고 나서야 내 프로젝트에서 뭐가 부족한지 눈에 들어왔다. 막연하게 AI로 수학 문제 풀기라고만 생각했던 게 CNN 인코더 → Transformer 디코더 → 심볼릭 파서라는 구체적인 세 단계로 쪼개진 것만으로도 수강료 값어치는 충분히 했다.