-
페이지마다 이긴 엔진이 달랐다AI Agent 2026. 7. 16. 21:00728x90반응형

페이지마다 이긴 엔진이 달랐다 스캔본 더미를 텍스트로 뽑는 작업을 맡았습니다.
한 권이 아니라 수천 건이었고, 페이지마다 표가 박혀 있었습니다.
추출 엔진은 후보가 여럿 있었는데, 첫 묶음부터 답이 안 나왔습니다.
어느 게 제일 좋냐고 물으면 대답을 못 했거든요.
A가 깔끔하게 뽑은 페이지를 B는 글자를 뭉갰고, 바로 다음 페이지에선 정반대였습니다.처음엔 그냥 제일 잘하는 놈 하나만 고르려고 했습니다.
표본 몇 장 돌려서 평균 점수 높은 쪽을 채택하고 끝내려고요.
그게 보통 하는 방식이니까요.
엔진 하나 정하고, 파이프라인에 박고, 나머지는 버리고.
그래야 처리도 빠르고 관리할 것도 하나니까요.평균을 냈더니 둘 다 애매했습니다
표본 점수를 뽑아보니 A랑 B가 거의 비등했습니다.
0.0몇 차이.
이럴 때 평균만 보면 "둘이 비슷하네, 아무거나" 하고 넘어가게 되는데, 그 평균이 거짓말을 하고 있었습니다.페이지별로 풀어보니까 비등한 게 아니었습니다.
둘이 번갈아 이기고 있었습니다.
A가 0.83을 받은 페이지에서 B는 0.36을 받았고, 다음 페이지에선 그게 그대로 뒤집혔습니다.
0.83이 0.36으로, 0.36이 0.83으로.
평균을 내니까 둘 다 0.6 언저리로 수렴해서 차이가 안 보였던 겁니다.한 페이지에선 A가 표 제목
입금일을 살렸는데 금액 칸을 통째로 오른쪽으로 밀었고, B는 제목을임금일로 틀렸지만 금액 칸은 제자리에 뒀습니다.
다음 페이지에선 반대였어요.
A가 손글씨 메모를 거의 못 읽고, B가 흐린 메모를 살렸습니다.
평균 점수 한 줄로는 이 차이가 안 보였습니다.같은 묶음 안에서도 승자가 계속 갈렸습니다.
한참을 들여다보고서야 규칙이 보였습니다.
표가 빽빽한 페이지는 한쪽이 강했고, 잉크가 번지거나 손글씨가 섞인 페이지는 다른 쪽이 강했습니다.
페이지마다 성격이 다르니까, 잘 먹는 엔진도 페이지마다 달랐던 겁니다.여기서 손이 멈췄습니다.
엔진을 고르는 단위가 잘못됐다는 걸 그제야 알았거든요.
저는 "이 작업에 어느 엔진"을 고르고 있었는데, 점수가 실제로 갈리는 단위는 작업이 아니라 페이지였습니다.
작업 단위로 하나 고르는 순간, 그 엔진이 못 먹는 페이지를 절반쯤 손해 보고 시작하는 셈이었습니다.
평균 0.6짜리 엔진을 고르는 게 아니라, 페이지마다 0.83을 골라 쓸 수 있는데 그걸 버리고 있었던 거죠.고르는 걸 그만뒀습니다
그래서 고르는 걸 그만뒀습니다.
대신 후보를 페이지마다 전부 돌리고, 페이지 단위로 점수를 매겨서 그 페이지의 승자만 채택했습니다.
1쪽은 A, 2쪽은 B, 3쪽은 다시 A.
누가 봐도 지저분한 구성인데, 결과물 정확도는 단일 엔진 어느 쪽보다 높았습니다.공짜는 아니었습니다.
엔진을 매 페이지 다 돌리니까 처리 시간이 몇 배로 늘었습니다.
한 놈만 돌리면 끝날 걸, 다 돌리고 점수까지 매기니까요.
근데 이 작업은 정확도가 시간보다 비쌌습니다.
틀린 글자 하나 사람이 잡으러 가는 비용이, 페이지당 몇 초 더 쓰는 것보다 훨씬 컸거든요.
반대였으면 당연히 하나만 골랐겠죠.
이건 작업 성격이 정해준 거지, 항상 섞으라는 얘기는 아닙니다.자동 점수를 못 믿겠더라
여기까지가 깔끔한 부분입니다.
진짜 문제는 그다음이었습니다.점수를 매기는 채점기 자체를 못 믿겠더라고요.
어떤 페이지는 엔진이 0.83을 받아놓고, 막상 결과를 열어보니 숫자 한 칸이 통째로 옆으로 밀려 있었습니다.
점수는 높은데 답은 틀린 겁니다.
점수가 높다고 자동으로 채택하던 걸 거기서 멈췄습니다.
채택하기 전에, 뽑힌 값이 페이지 안에서 앞뒤가 맞는지 따로 한 번 더 확인하는 단계를 끼웠습니다.
그게 통과 못 하면 점수가 아무리 높아도 자동으로 넘기지 않았습니다.확인 단계를 못 통과한 페이지가 생각보다 많았습니다.
표가 아예 이미지로만 박혀 있어서 어느 엔진도 칸을 못 읽는 페이지, 같은 칸이 두 번 나와서 어느 쪽이 진짜인지 모를 페이지, 접근 자체가 막힌 페이지.
이런 건 승자를 뽑을 수가 없었습니다.
뽑을 게 아예 없으니까요.
셋을 다 돌려도 셋 다 빈칸이 나오는 페이지가 있다는 걸, 그제야 받아들였습니다.못 푼 걸 못 풀었다고 적어두기
여기서 두 번째로 고르는 걸 그만뒀습니다.
이번엔 억지로 답을 만드는 걸 그만뒀습니다.처음엔 못 읽은 페이지도 어떻게든 값을 채워 넣고 싶었습니다.
빈칸이 보기 싫었거든요.
셋 중에 그나마 덜 틀린 걸 골라서라도 메우면, 적어도 표는 다 채워지니까요.
근데 그렇게 억지로 채운 값이 깨끗한 값들 사이에 섞이면, 나중에 그게 진짠지 가짠지 구분이 안 됩니다.
멀쩡한 값 옆에 가짜가 숨는 거죠.
그게 더 무섭습니다.그래서 못 푼 페이지는 못 풀었다고 명시적으로 적어뒀습니다.
"이미지뿐이라 못 읽음", "칸이 겹쳐서 보류", "접근 막힘" — 이유까지 같이요.
이걸 실패 더미에 버린 게 아니라, 따로 추적하는 목록으로 관리했습니다.
그래야 다음에 같은 페이지를 또 붙잡고 똑같이 헛고생을 안 하거든요.
한 번 "이건 지금 도구로는 안 된다"고 판정한 건 그 판정째로 남겨뒀습니다.그래서 이 작업은 "다 뽑았습니다"로 끝나지 않았습니다.
깨끗하게 뽑힌 묶음, 사람이 다시 봐야 하는 묶음, 지금 도구로는 못 푸는 걸로 표시해둔 묶음.
이렇게 셋으로 갈라서 넘겼습니다.
못 푼 칸을 자동으로 메우는 채점기는 아직 안 만들었습니다.
그건 "나중에 별도로 붙인다"고 적어만 뒀습니다.지금도 그 보류 목록은 줄지 않고 그대로 있습니다.
다음 묶음을 받으면 또 거기에 몇 줄이 더 쌓일 것 같습니다.728x90반응형'AI Agent' 카테고리의 다른 글
AI 답을 복붙하기 전에, 한 줄씩 소리 내 읽는 버릇이 생겼어요 (0) 2026.07.17 버그가 361군데. 그날 고친 건 81군데였어요 (0) 2026.07.17 최신 폰은 다 죽고, 제일 낡은 게 해냈어요 (0) 2026.07.16 신발장 비우기 전에, 메모장부터 켰어요 (0) 2026.07.15 코드는 다 바꿨는데, AI는 아직 어제를 읽고 있습니다 (0) 2026.07.15