탐지 박스에서 재작성된 글리프까지: 이미지 속 텍스트를 위한 개발자 파이프라인
요약
이미지 속 텍스트를 번역하여 현지화하는 개발자 파이프라인을 제시합니다. 이 과정은 단순히 문자열을 번역하는 것이 아니라, OCR로 탐지된 '탐지 박스' 내의 글리프를 찾아내고, 이를 다른 언어로 재작성(Redraw)하는 복잡한 과정을 거칩니다. 핵심 단계는 텍스트 영역을 찾고(Detect), 읽은 후(Read), 번역하고(Translate), 원본을 지우고(Erase), 새로운 내용을 다시 그리는(Redraw) 파이프라인 구축입니다.
핵심 포인트
- 이미지 현지화는 레이아웃 제약으로 인해 단순 문자열 번역이 불가능합니다.
- 파이프라인은 Detect (탐지) → Read (읽기) → Translate (번역) → Erase (지우기) → Redraw (다시 그리기)의 5단계로 구성됩니다.
- Detect 단계에서는 OpenCV나 EasyOCR 같은 도구를 사용하여 글리프가 포함된 정확한 좌표를 얻는 것이 중요합니다.
- Erase 및 Redraw 단계에서 배경 재구성(Inpainting)과 적절한 글꼴 선택이 핵심 기술적 과제입니다.
완성된 이미지에 새겨진 단어를 변경하는 열 가지 방법 — 그리고 디자인, 서체, 배경은 디자이너가 이미 승인한 상태로 유지합니다.
이미지는 문자열을 번역해서 번역할 수 없습니다. 박스를 찾고, 그 안에 무엇이 있는지 읽어낸 다음, 같은 픽셀에 다른 글리프를 다시 넣는 것입니다. 캠페인 포스터는 디자인이 영어로 남습니다. 메뉴는 일본어로 남습니다. 제품 라벨은 독일어로 남습니다. 다이어그램은 스페인어 주석과 함께 남습니다. 당신이 가진 것은 내보내기 결과물입니다: PNG나 JPEG이며, 레이어는 사라지고 텍스트는 비트맵에 그려져 있습니다. 요구사항은 변하지 않습니다. 다른 언어를 배송하세요. 다른 디자인을 배송하지 마세요.
문서 번역기는 레이아웃이 유연하게 움직일 수 있게 합니다. 이미지는 그렇지 못합니다. 열 너비, 드롭 섀도우, 헤드라인 아래의 질감은 픽셀 카운트입니다. 원본 단어를 지우면 그것이 덮고 있던 픽셀도 함께 지워집니다. 이미지 현지화(Image localization)가 바로 그 제약사항입니다: 의미는 바뀌어야 하지만, 이미지는 그렇게 할 수 없습니다.
이 글은 개발자가 구축할 파이프라인을 따라가며, 각 단계를 소유하는 열 가지 실제 방법을 다룹니다. 스크립트, OCR, 그리고 API가 어떤 휴대폰 카메라 이야기보다 먼저 옵니다. 충실도(Fidelity), 비용, 그리고 실패 모드는 그것들을 가진 방법에 붙어 있습니다.
탐지 박스가 작업 단위이다
모든 텍스트 흐름을 직사각형으로, 그다음 문자열로, 그다음 채워야 할 구멍으로, 마지막으로 다시 넣어야 할 잉크로 취급하세요. 만약 파이썬(Python)으로 루프를 구축한다면, 단계들은 의도적으로 지루합니다. 지루한 것이 테스트할 수 있는 것입니다.
- 탐지(Detect). 글리프가 포함된 영역을 찾습니다. OpenCV의 엣지(edge) 또는 컨투어(contour) 탐지는 고대비 라벨에 박스를 제공합니다. EasyOCR 같은 심층 OCR 모델이나, 단어 박스를 반환하는 모드에서의 Tesseract가 사진에서 더 잘 작동합니다. 페이지 전체 텍스트 덩어리가 아닌 좌표를 원해야 합니다. 너무 타이트한 박스는 발음 부호(diacritic)를 잘라내고, 너무 느슨한 박스는 로고나 화살표 머리 부분을 포함합니다.
- 읽기(Read). 크롭된 이미지를 OCR 처리합니다. 언어 힌트가 중요합니다. 라벨에 스페인어가 있는 경우와 패키지에 중국어가 있는 경우는 다릅니다. 신뢰도 점수(confidence score)를 유지하세요. 신뢰도가 낮은 박스는 조용히 번역해서는 안 되는 박스입니다.
- 번역(Translate). 이미지 자체가 아닌 문자열을 기계 번역 API나 사람에게 보냅니다. Google Translate, DeepL, Baidu Translate가 일반적으로 사용되는 엔진입니다. 변경 없이 유지되어야 하는 토큰(brand names, SKUs, 등록 상표 등)과 의미가 언어적인 것이 아닌 숫자는 고정합니다.
- 지우기(Erase). 글리프를 잘라내고 배경을 재구성합니다. 평평한 채움(flat fill)의 경우 이는 샘플링된 색상의 직사각형입니다. 사진의 경우, 그라디언트나 질감에 대한 인페인트(inpaint)가 필요합니다. 작은 스크립트는 보통 평평한 색상이나 주변 평균값으로 채웁니다. 이 평균값이 반창고처럼 보이는 것을 '확산 인페인트(diffusion inpainter)'라고 부릅니다.
- 다시 그리기(Redraw). Pillow나 OpenCV를 사용하여 박스 안에 번역된 내용을 그립니다. 실제로 파일이 있는 가장 유사한 글꼴을 선택합니다. 무게(weight), 채움(fill), 크기를 설정합니다. 자간 폭(advance width)을 측정합니다. 문자열이 맞지 않으면, 축소하거나, 줄 바꿈을 하거나, 추적(track)합니다. 들어맞는 것처럼 꾸미지 마세요.
- 작성(Write). 로드했을 때와 동일한 해상도로 비트맵을 저장합니다. 원본을 보관하고 차이점 분석(diff)을 수행합니다. 그 차이점은 이전 텍스트 박스 내부에서만 빛나고 거의 다른 곳에서는 나타나지 않아야 합니다.
이것이 전체 제품입니다. 사람이 직접 실행하든, 작업이 밤새도록 실행하든 상관없습니다. 호스팅되는 도구들은 1단계부터 5단계를 하나의 요청 뒤에 숨깁니다. 멀티모달 모델은 프롬프트 안에 그것들을 숨깁니다. 확산(Diffusion) 모델은 마스크를 요구한 다음 픽셀을 만들어냅니다. 디자이너는 스타일러스와 글꼴 메뉴로 지우고 다시 그립니다. 주머니 속 휴대폰은 이 루프의 거친 버전을 수행하고 판독 오버레이를 찍어내는데, 이는 다른 제품입니다.
Atlas Cloud 역시 같은 분할을 설명합니다. OCR이 단어를 추출한 후에도 누군가는 그것들을 디자인 안에 다시 배치해야 합니다. 순수 래스터(raster) 편집은 변경 사항을 새 레이어에 병합하여 개별 글자에 대한 제어가 적습니다. 수동 타이포그래피는 느리지만, 글꼴만 맞으면 가장 정밀합니다. 스크립트가 이 둘 사이에 위치합니다. 좌표를 얻게 됩니다. 원래의 텍스트 프레임, 원래의 자간(leading), 또는 원래의 OpenType 기능은 재구성하지 않는 한 얻을 수 없습니다.
입력은 비트맵(bitmap)입니다. 출력도 같은 크기의 비트맵입니다. 모든 방법이 계산하거나 가짜로 만들어내는 값은 문자열이 포함된 박스 목록입니다. 이 박스들을 볼 수 없다면, 단 하나의 잘못된 캡션도 디버깅할 수 없습니다.
재작성(Redraw)이 살아남기 위해 필요한 네 가지 제약 조건
레이아웃은 고정되어 있습니다. 하지만 단어들은 그렇지 않습니다. 아래의 모든 방법은 동일한 네 가지 한계에 대한 상충 관계입니다.
길이가 보존되지 않습니다. 짧은 영어 구문이 독일어나 프랑스어에서는 종종 30% 이상 커지고, 중국어 또는 일본어에서는 보통 줄어듭니다. 박스는 문법에 따라 커지지 않습니다. 크기를 조정하거나, 재배치(re-wrap)하거나, 재추적(re-track)해야 합니다. 번역된 내용이 변함없이 들어맞는다고 가정하는 것이 버튼이 넘치는 원인입니다.
글꼴을 다시 구축해야 합니다. 글꼴군(Family), 굵기(weight), 색상, 자간(letter-spacing), 그리고 모든 그림자(shadow), 스트로크(stroke), 또는 윤곽선(outline)은 디자인의 일부입니다. 기본 산세리프(sans)에 적절한 문장이 있어도 패치처럼 보일 수 있습니다. 동일한 글꼴 파일이 없으면 완벽하게 일치시키기 어렵습니다. Photoshop과 Pillow는 이 한계를 공유합니다. 로드할 수 있는 페이스만 렌더링할 수 있기 때문입니다.
글리프(glyphs) 아래의 배경은 지우면 파괴됩니다. 단색 배경은 쉽습니다. 사진, 그라디언트 또는 텍스처는 재구성이 필요합니다. 가장자리를 부드럽게 처리하고 1:1로 이음매를 확인하세요. 눈에 보이는 사각형은 채우기 작업이 실패했음을 의미합니다.
비문(non-text) 기하학적 요소도 범위에 포함됩니다. 화살표, 호출선(callouts), 번호 매김, 범례 등에는 텍스트가 있거나 그 텍스트를 가리킵니다. OCR은 문자열만 반환합니다. 이 화살표가 어떤 캡션에 속하는지는 반환하지 않습니다. 사람이나 전체 그림을 볼 수 있는 모델이 처리해야 합니다.
적절한 방법은 충실도(fidelity), 프레임 내 텍스트 양, 그리고 원본 파일의 존재 여부에 따라 달라집니다.
버튼보다 스크립트가 먼저: 맞춤형 파이프라인 및 OCR 타이포그래피
버튼(기성 솔루션)을 빌리기 전에 배치 작업(batch job)을 직접 구축하세요. 휴대폰 카메라 경로는 의도적으로 가장 마지막에 두었습니다.
방법 8: 직접 실행하는 컴퓨터 비전 스크립트
작동 방식. 이는 첫 번째 섹션의 루프를 코드로 구현한 것입니다. OpenCV 엣지 또는 윤곽선 감지(contour detection)로 영역을 탐지하거나, 심층 OCR 모델을 사용합니다. 각 박스를 OCR 처리하고 번역합니다. 글리프를 잘라내고 배경을 채웁니다. 새로운 문자열을 그립니다. 파일을 작성합니다. 기성 GUI는 없습니다. 스크립트 자체가 제품입니다.
도구. Pillow, OpenCV, EasyOCR 및 pytesseract가 포함된 Python이 필요합니다. 문자열 처리를 위한 Baidu 또는 Google Translate API를 사용합니다. 동일한 작업은 Adobe PixelSense와 C# 또는 .NET 이미지 코드로 구현할 수 있습니다.
입력 및 출력. 정상적인 비트맵을 입력으로 받습니다. 같은 해상도의 비트맵을 출력합니다. 파일 옆에 박스 목록을 보관하여, 잘못된 레이블이 OCR, 번역, 또는 그리기 과정 중 어느 단계에서 발생했는지 추적할 수 있도록 합니다.
자동화. 스크립트가 실제로 완성되면 높은 수준의 자동화가 가능하며, 완벽하게 배치 처리가 가능합니다. 임계값(Thresholds), 언어 팩, 글꼴 폴백(font fallbacks)은 아직 미완성된 부분입니다.
충실도. 중간 정도이며, 세부 사항에 따라 달라집니다. 원래의 박스 안에 그리는 방식으로 레이아웃을 대략적으로 유지할 수는 있습니다. 하지만 글꼴을 자동으로 일치시키는 것은 보통 불가능하며, 수동으로 가장 가까운 글꼴을 선택해야 합니다. 채우기는 일반적으로 단색이나 주변 평균값(neighborhood average)입니다. 이는 확산 인페인팅(diffusion inpaint)보다 덜 자연스러우며, 복잡한 배경과 비표준 문자에 대해서는 실패합니다.
시간과 비용. 개발 비용이 높습니다. 런타임은 이미지당 몇 초 단위입니다. 파편들이 오픈 소스이거나 이미 라이선스가 있다면, 제3자 서비스 옆에 돈을 거의 '0'으로 유지할 수 있습니다. 청구서가 코딩입니다.
장점과 단점. 완전한 통제권, 배치 처리(batch), 그리고 공개 네트워크를 벗어날 수 있는 경로가 있다는 점입니다. 디자인-디테일 충실도는 전용 이미지 모델에 미치지 못합니다. 사용자가 파라미터를 조정하고 누락된 부분을 수정해야 합니다.
적합한 경우. 기업 프로세스 요구사항이나 소규모 라벨 교체 작업입니다. 일반적인 경우는 상인이 제품 이미지 라벨에 OCR, 번역, 그리고 다시 쓰는(write-back) 작업을 스크립팅하는 것입니다. 까다롭고 유연합니다.
방법 2: 레이아웃을 유지한 채로 OCR 후 타이포그래피 처리하기
작동 방식. 방법 8의 앞부분과 동일합니다. 콘텐츠와 위치에 대한 OCR을 수행하고, 이후 사람이나 레이아웃 앱이 뒷부분을 담당합니다. 기계 또는 번역가에 의해 번역됩니다. 원래의 위치와 스타일로 다시 렌더링(Re-render)합니다. 파이프라인은 인식(recognition), 번역(translation), 레이아웃 재구성(layout reconstruction), 출력 이미지입니다.
도구. Tesseract, EasyOCR, Adobe Acrobat OCR. Google Translate, DeepL, Baidu Translate. 레이아웃은 Adobe InDesign이나 Photoshop에서, 또는 그림이 차트인 경우 Pillow와 Matplotlib에서 처리합니다.
입력 및 출력. PNG 또는 JPEG가 입력되고, 새로운 이미지가 출력됩니다. PDF나 AI로 우회하는 것은 가치가 있습니다. 텍스트 프레임은 그라디언트를 다시 칠할 필요 없이 자간(leading)을 변경할 수 있기 때문입니다.
자동화. 보통 수준입니다. OCR과 번역 스크립트는 깨끗하게 작동합니다. 최종 타이포그래피 처리는 그렇지 않은 경우가 많습니다. 소스 길이와 대상 길이가 달라지고 누군가 사진에 닿지 않으면서 크기와 줄 간격(line spacing)을 변경해야 할 때 말이죠.
충실도. 글꼴과 프레임이 일치할 때는 높습니다. 확장 작업은 여전히 원래의 간격을 깨뜨리므로, 사용자가 스케일링하거나 재배치해야 합니다. 복잡한 그림 속의 잘못된 박스는 약한 동의어보다 더 큰 피해를 줍니다. 자간(Kerning)과 합자(ligatures)는 적절한 계열 내에서도 틀어지기 쉽습니다. 리더 라인(Leader lines)과 번호 매김은 처리되지 않습니다. 수동으로 유지되어야 합니다.
시간과 비용. OCR에 번역을 더하면 몇 초에서 몇 분이 걸립니다. 타이포그래피(Typesetting) 작업은 몇 분에서 수십 분이 걸립니다. 오픈 소스 OCR이나 이미 지불하고 있는 API를 사용한다면 비용은 낮게 유지됩니다. 노동력이 가장 큰 비용입니다. (타이포그래피 시간)**
장점과 단점. 빈 레이어(blank-layer)로 다시 그리는 것보다 빠르며, 텍스트가 남아있는 상태에서 검토할 수 있습니다. OCR 정확도와 글꼴 일치 여부에 의존합니다. 한 번의 버튼 클릭만으로는 출판될 수 없습니다.
최적의 사용처. 차트 주석(Chart annotations), 기술 매뉴얼, 교육용 다이어그램입니다. PDF 번역기들도 같은 아이디어를 따릅니다: 구조를 파싱하고, 영역별로 번역하며, 제자리에 대체하고, 레이아웃을 보존합니다. 평면 이미지에 대해서는 텍스트 레이어 없이 이 알고리즘을 실행하는 것입니다.
모델에게 다시 그리도록 요청할 때 API 호출하기
탐지(detection)나 인페인팅(inpainting)을 위임한다고 해서 숫자와 이름에 대한 검증까지 위임되는 것은 아닙니다.
방법 6: 이미지와 지침(instruction)을 모두 받는 멀티모달 모델
작동 방식. GPT-4V, 후속 비전 기능이 탑재된 GPT-4 클래스 모델, ChatGPT 이미지 편집, 또는 DALL·E 편집은 이미지에 텍스트를 번역하고 디자인은 그대로 유지하라는 지침을 받습니다. 이 모델은 탐지(detect), 이해(understand), 생성을 동시에 수행해야 합니다. 사용자가 조작할 수 있는 것은 다음과 같습니다: 입력으로 이미지와 지침, 출력으로 인식 및 번역 결과, 그리고 새로운 이미지, 그 후 인간의 교정 작업입니다. 후속 질문을 박스 목록처럼 취급하지 마십시오.
도구. OpenAI ChatGPT와 같은 GPT-4V와 같은 이미지 기능. DALL·E 3 이미지 편집 API를 호출할 때 사용합니다. Google Imagen Editor는 주로 프로덕션 제어보다는 연구 단계에 가깝습니다. 서비스 내부에서는 개발자 접근이 OpenAI API입니다.
입력과 출력. 입력으로 이미지와 프롬프트(prompt)가 들어갑니다. 원본 해상도 또는 설정한 크기의 새로운 이미지가 나옵니다. 레이어는 반환되지 않습니다. 모델이 프레임을 재생성했다면, 캡션보다 더 많이 검사해야 합니다.
자동화. 높습니다. 하나의 프롬프트가 작업을 수행할 수 있습니다. 그래도 프롬프트, 모델, 그리고 이미지 해시(hash)를 기록하는 것이 좋습니다. 프롬프트는 나쁜 감사 로그(audit log)입니다.
충실도(Fidelity). 전반적으로 레이아웃과 스타일이 높습니다. OpenAI의 예시에는 커피 머신 사용 설명서 다이어그램을 스페인어로 번역하면서 레이아웃은 유지한 사례가 포함됩니다. Atlas Cloud는 GPT-4V가 인포그래픽 텍스트를 번역하고 나머지 그림 요소들은 그대로 남겨두었다고 보고했습니다. 모델들은 여전히 문자열을 놓치거나, 철자를 틀리게 하거나, 새로운 길이가 이전 길이와 많이 다를 경우 요소를 이동시키는 문제가 있습니다. 수정 작업에 예산을 책정해야 합니다. 이것은 정교한 타이포그래피(typesetting)가 아닙니다. 마케팅 아트에는 종종 충분히 좋지만, 이는 규제 라벨과는 다른 기준입니다.
시간과 비용. 중간 정도입니다. 이미지 하나당 몇 초에서 수십 초가 걸리며, 여기에 API 또는 구독 비용과 검토 시간이 추가됩니다. 할당량(Quota)은 유한합니다.
장점과 단점. 화살표, 범례, 계층 구조는 모델이 상자들의 묶음이 아니라 그림 전체를 보기 때문에 살아남을 수 있습니다. 세밀한 제어는 제한적입니다. 철자 오류, 남아있는 원본 언어, 또는 합성 아티팩트(compositing artifacts)가 발생할 것으로 예상해야 합니다.
최적의 사용처. 인포그래픽, 포스터, 삽화된 홍보물입니다. 사용할 수 있는 프롬프트는 구체적입니다: '모든 텍스트를 중국어로 번역하고 다른 것은 아무것도 변경하지 마시오.' 한 줄이 넘칠 경우 해당 영역을 다시 처리합니다. 포스터 전체를 다시 처리하면 배경이 흐트러집니다.
방법 7: 마스크를 직접 제어하는 확산 인페인팅(Diffusion Inpainting)
작동 방식. 텍스트에 마스크를 씌운 다음, 배경을 유지하도록 대체할 내용을 프롬프트합니다. DALL·E 3 또는 Stable Diffusion inpainting이 이 마스크를 채웁니다. 흐름은 탐지 → 마스크 생성 → 프롬프트(
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기