레스토랑 및 식음료 팀용

모든 메뉴 사진을 구조화된 데이터 테이블로 변환 — 섹션 헤더가 요리 행이 되지 않도록

메뉴는 데이터 추출이 아닌 시각적 매력을 위해 디자인됩니다. 가격은 일관된 정렬 없이 요리 옆에 배치되고, 설명은 불규칙한 줄바꿈으로 여러 줄에 걸쳐 있습니다. 섹션 헤더는 카테고리를 시각적으로 구분하지만, 기존 OCR로 읽으면 유령 데이터 행이 됩니다. 이 도구는 시각적 위계를 읽습니다: 섹션 라벨은 카테고리 열에 유지되고, 요리 이름과 가격은 각자의 열에 정렬되며, 추출된 모든 필드는 인쇄본, 코팅지, 손글씨 칠판, 또는 여러 페이지 PDF 등 어떤 메뉴든 제자리에 배치됩니다.

레스토랑 운영자 · 메뉴 디지털화 팀 · 경쟁사 리서치 분석가

JPG / PNG / PDF
모든 메뉴 레이아웃
XLSX / CSV / JSON
일괄 처리

메뉴 사진에서 추출할 수 있는 항목

필요한 열 이름을 입력하세요. AI는 페이지에서의 위치가 아니라 의미를 이해하여 모든 메뉴에서 각 값을 찾아냅니다. 손으로 쓴 칠판 특선 메뉴판과 PDF의 라미네이트된 고급 레스토랑 메뉴 모두 동일한 열로 구조화된 출력을 생성합니다.

핵심 요리 데이터

항목 이름
설명
가격
카테고리 / 섹션

식이·영양·운영 속성

식이 태그 (V, GF, NF)
맵기 단계
칼로리
항목 코드

고정된 목록이 아닙니다. 메뉴에 포함된 어떤 필드 이름이든 입력할 수 있습니다. 알레르기 경고, 와인 페어링, 원산지 표시: 동일한 추출 로직이 적용됩니다.

기존 OCR이 메뉴를 깨진 텍스트로 만드는 이유 — 그리고 Visual AI가 구조를 읽는 방법

메뉴는 디자인이 위계를 전달하는 유일한 비즈니스 문서입니다. 굵고 중앙 정렬된 "메인 요리"는 데이터 행이 아니라 카테고리 지시입니다. 기존 OCR은 텍스트를 읽는 순서대로 인식하고 시각적 구조를 단일 텍스트 스트림으로 평탄화합니다. 요리 이름과 섹션 헤더의 차이는 완전히 사라집니다.

문제점

01 가격이 요리 옆에 정렬 없이 떠 있고, OCR이 이를 잘못된 항목에 연결합니다

메뉴는 격자가 아닙니다. 가격은 설명 줄 끝에 탭과 같은 간격으로 떨어져 있을 수 있습니다. 열에서 오른쪽 정렬되어 왼쪽의 요리 이름과 공백 및 점선으로 시각적으로 연결될 수 있습니다. 요리 이름 뒤에 구분자 없이 바로 이어질 수도 있습니다. 기존 OCR 엔진은 페이지를 위에서 아래로, 왼쪽에서 오른쪽으로 읽어 "Grilled Salmon — Served with lemon butter sauce and seasonal vegetables — 28.00 — Pan-Seared Ribeye — 12oz grass-fed beef with truffle fries — 34.50"이 하나의 구분되지 않는 블록이 됩니다. $28.00 가격은 연어 설명에 붙고, $34.50 가격은 립아이에서 완전히 분리됩니다. 이후 수 시간의 수동 정리가 이어집니다 — 그리고 이는 6개 카테고리에 걸친 다중 섹션 메뉴를 처리하기 전의 이야기입니다.

02 설명이 불규칙한 줄바꿈으로 이어지고, 파서가 각 조각을 별도 필드로 처리합니다

"House-made pasta, slow-braised lamb ragù, pecorino romano, fresh basil" 같은 요리 설명은 열 너비와 글꼴 크기에 따라 두세 줄로 이어질 수 있습니다. 기존 OCR은 각 줄바꿈을 데이터 경계로 읽어 설명을 세 조각으로 나누고 각 조각을 별도 행에 할당하거나, 조각을 연결하되 2~3행을 유령 요리에 귀속시킵니다. 한편 해당 요리의 실제 가격인 $26.00은 1행의 맨 오른쪽 공간에 고립되어 있습니다. 결과적으로 한 요리가 세 개의 부분 행을 만들고, 어느 행도 완전한 설명과 올바른 가격을 모두 갖추지 못합니다. 네 섹션에 40개 요리가 있는 메뉴의 경우 수동 수정 작업량이 빠르게 늘어납니다 — 레스토랑 운영 포럼 사용자들은 일관되게 보고합니다. 전문 도구 없이 메뉴를 디지털화하면 메뉴당 60~90분이 걸린다고요.

03 섹션 헤더가 표 구조를 깨뜨립니다. OCR은 제목과 요리 이름을 구분할 수 없기 때문입니다.

"스타터", "메인", "디저트", "사이드" — 이러한 섹션 라벨은 요리 이름과 동일한 타이포그래피 어휘를 사용합니다. 굵은 글씨, 더 큰 크기, 눈에 띄는 배치가 그렇습니다. 기존 파서는 "스타터"를 읽고 1행의 요리로 처리한 다음, "트러플 시저 샐러드 | $16.50"을 2행에 할당합니다. 그 결과 카테고리 라벨이 빈 가격 열을 가진 데이터 행으로 나타나고, 모든 요리가 섹션 맥락을 잃으며, 40개 항목 메뉴가 8개의 가짜 행을 가진 48행 스프레드시트가 됩니다. 이러한 출력물로 디지털 메뉴 데이터베이스를 구축하려는 레스토랑 운영자는 섹션 헤더 행을 삭제하고 카테고리를 수동으로 다시 할당하는 데 데이터를 처음부터 입력하는 것만큼 많은 시간을 소비합니다.

맞춤 열 추출이 해결하는 방법

01 시각적 근접성을 읽지, 선형적 텍스트 순서를 읽지 않습니다 — 가격은 해당 요리와 함께 유지됩니다

맞춤 열 추출 — ImageToTable.ai의 핵심 메커니즘 — 은 텍스트를 순차적으로 읽지 않습니다. "항목 이름", "설명", "가격" 같은 열 이름을 입력하면, AI는 각 값을 페이지 전체에서 의미적으로 무엇인지, 시각적으로 무엇에 속하는지 파악하여 찾아냅니다. 요리 이름 오른쪽에 정렬된 가격은 같은 텍스트 줄에 나타나기 때문이 아니라 시각적 근접성을 공유하기 때문에 해당 요리에 속하는 것으로 이해됩니다. 두 줄에 걸쳐 줄바꿈된 설명은 별도의 조각이 아닌 하나의 연속된 텍스트 블록으로 읽힙니다. 즉, 가격이 점선 뒤 오른쪽 정렬된 메뉴, 두 줄 레이아웃에서 요리 이름 아래에 쌓인 가격, 설명 뒤에 인라인으로 붙는 가격 — 메뉴 디자이너가 선택한 어떤 정렬 방식이든 — 각 요리 행의 가격 열에 올바른 가격이 들어간 깔끔한 출력이 생성됩니다.

02 섹션 헤더는 데이터가 아닌 구조로 인식됩니다 — 그리고 카테고리 열이 됩니다

AI가 굵은 중앙 정렬 텍스트와 위쪽 여백이 있는 "에피타이저"를 만나면, 이를 요리 이름으로 추출하지 않습니다. 전체 시각적 맥락을 읽습니다: "에피타이저" 라벨 뒤에 각자의 이름, 설명, 가격을 가진 여러 요리가 이어집니다. "에피타이저"가 메뉴 항목이 아닌 카테고리 지정임을 이해하고, 그 아래의 모든 요리를 카테고리 열에 "에피타이저" 또는 "스타터"로 할당합니다. 다음 섹션 헤더인 "메인"이 나타나면 카테고리 할당이 그에 따라 전환됩니다. 출력은 각 행에 카테고리 필드가 채워지고, 섹션 헤더가 유령 요리 행으로 나타나지 않는 깔끔한 테이블입니다. 카테고리가 2페이지 하단에서 3페이지 상단으로 이어질 수 있는 다중 페이지 메뉴의 경우, AI는 페이지 나눔을 넘어 섹션 맥락을 계속 추적하므로 카테고리 없이 고립된 요리가 생기지 않습니다.

03 속성 필드 — 식이 태그, 매운맛 단계, 칼로리 — 패턴 매칭이 아닌 의미 인식으로 추출됩니다

메뉴는 식이 및 영양 정보를 일관되지 않은 방식으로 전달합니다. 채식 표시는 "V" 아이콘, 녹색 잎 기호, "Vegan"이라는 단어 또는 "(v)"일 수 있습니다. 매운맛 단계는 칠리 아이콘 1~5개, "순한 맛/중간 맛/매운 맛"이라는 단어, 또는 매운맛 척도의 숫자로 표시될 수 있습니다. 칼로리는 설명 뒤에 "(450 cal)"로 인라인 인쇄되거나 자체 헤더가 있는 별도의 "Cal" 열로 인쇄될 수 있습니다. 기존 OCR은 문자("V", "450 cal", "🌶️🌶️")를 읽을 수 있지만, 그 의미나 어떤 요리에 속하는지는 해석할 수 없습니다. AI는 이러한 속성을 의미적으로 읽습니다. 즉, 요리 이름 옆의 "(v)"가 채식 태그를 나타내고, "🔥🔥🔥"가 매운맛 단계 3/5를 나타낸다는 것을 이해하며, 각각을 출력의 올바른 요리 행과 올바른 열에 할당합니다. 메뉴에 텍스트 라벨 없는 아이콘만 사용하는 경우에도, 매운맛 단계 열을 정의하면 AI가 아이콘 개수를 매운맛 수준으로 해석할 수 있습니다.

메뉴 사진에서 구조화된 스프레드시트까지: 워크플로우 살펴보기

온라인 주문 플랫폼용 메뉴를 디지털화하거나, 레스토랑 지점별 경쟁력 있는 가격 데이터베이스를 구축하거나, 요리 연구 프로젝트를 위해 과거 메뉴를 아카이브하려는 경우, 이 도구가 메뉴별 설정 없이 사진을 구조화된 데이터로 변환하는 방법은 다음과 같습니다.

1

메뉴 사진을 업로드하세요 — 어떤 형식, 어떤 레이아웃, 어떤 출처든 상관없습니다

어떤 출처의 메뉴 이미지나 PDF든 업로드하세요: 칠판 특별 메뉴판의 스마트폰 사진, 코팅된 매장 내 메뉴의 스캔 PDF, 디지털 QR 코드 메뉴의 스크린샷, 또는 여러 페이지로 된 테이크아웃 메뉴판까지. 이 도구는 JPG, PNG, WebP, PDF 형식을 지원합니다. 여러 지점을 운영하는 레스토랑 그룹이라면 일괄 처리를 활용하세요: 모든 지점의 메뉴를 한 번에 업로드하면 각 요리가 위치 식별자와 함께 한 행으로 정리된 단일 통합 스프레드시트를 받을 수 있습니다 — 지점별로 별도 작업이 필요 없습니다. 외부 기여자로부터 메뉴를 수집해야 한다면 수집 링크를 생성하세요: 누구나 짧은 인증 코드를 입력해 메뉴 사진을 처리 대기열에 직접 업로드할 수 있는 공유 URL로, 상대방은 계정이나 로그인이 필요 없습니다.

2

열 이름을 한 번만 지정하세요 — 모든 메뉴가 동일한 필드 목록으로 처리됩니다

원하는 열을 입력하세요: "항목 이름", "설명", "가격", "카테고리", "식이 태그", "맵기 단계", "칼로리", "항목 코드". 동일한 열 정의가 배치의 모든 메뉴에 적용됩니다 — 코팅된 고급 다이닝 PDF와 손으로 쓴 칠판 사진 모두 동일한 구조화된 형식으로 출력됩니다. 칼로리 추출의 경우, 열 이름을 "칼로리"로 입력하세요 — AI가 메뉴에 칼로리 값이 표시된 경우에만 추출하고, 없는 경우 셀을 비워 두므로 누락된 데이터로 인한 행 손실 없이 완전한 데이터셋을 얻을 수 있습니다. 정기적인 메뉴 업데이트 주기가 있다면 로그인하여 열 구성을 템플릿으로 저장하세요: 필드 이름을 다시 입력하지 않고 모든 새 배치에 재사용할 수 있습니다. 계산 열 기능을 사용하면 추출 중에 실행되는 계산식을 정의할 수도 있습니다: 예를 들어 "USD 가격" 열은 여러 통화 메뉴를 단일 출력 열로 정규화합니다.

3

구조화된 스프레드시트 다운로드 — 요리당 한 행, 모든 필드가 올바른 열에

각 요리는 출력물에서 한 행이 됩니다. 네 개의 섹션으로 구성된 45개 항목 메뉴는 45개의 행을 생성합니다 — 삭제해야 할 섹션 헤더 행 4개가 포함된 49개가 아니라요. 요리 이름은 항목 이름 열에, 설명은 설명 열에, 가격은 가격 열에 채워지며, 각 행의 섹션 헤더는 카테고리 열에 입력됩니다. 다이어트 태그, 매운맛 수준, 칼로리 데이터는 메뉴에 포함된 경우 해당 열에 표시됩니다. Excel에서 메뉴 데이터베이스 관리를 위한 XLSX, POS 시스템이나 온라인 주문 플랫폼 가져오기를 위한 CSV, 또는 직접 API 통합을 위한 JSON으로 내보낼 수 있습니다. 수작업 데이터 입력으로 하루 종일 걸리던 10개 지점 메뉴 일괄 처리는 몇 분 만에 완료됩니다 — 그리고 각 지점의 메뉴 디자인이 아무리 달라도 출력 형식은 모든 지점에서 일관됩니다.

메뉴 추출이 가장 효과적인 경우 — 그리고 샘플 확인이 도움이 되는 경우

가장 잘 작동하는 경우

모든 레이아웃 또는 열 구성의 표준 인쇄 메뉴. 단일 열, 이중 열, 다중 섹션 메뉴에서 항목 이름과 가격의 관계가 명확하면 안정적으로 추출됩니다. 가격이 설명 뒤 인라인으로 있든, 오른쪽 열에 정렬되어 있든, 항목 이름 아래에 쌓여 있든 — AI는 시각적 근접성을 읽어 각 가격을 올바른 항목에 할당합니다. 지점별로 일관된 메뉴 형식을 가진 레스토랑 체인은 배치 출력에서 거의 완벽한 결과를 생성합니다.

좋은 조명에서 정면으로 촬영한 손글씨 칠판 및 오늘의 특선 메뉴. AI는 다양한 손글씨 — 블록체, 일반 필기체, 칠판 위 펠트펜 — 를 읽고 항목 이름, 설명, 가격을 추출합니다. 정면 사진과 고른 조명이 최상의 결과를 만듭니다. 라미네이트 표면의 눈부심이나 칠판 반사는 문자를 가릴 수 있으므로 카메라 각도를 약간 기울여 반사를 줄이세요.

에피타이저, 메인, 디저트 같은 카테고리 헤더가 있는 다중 섹션 메뉴. 섹션 라벨은 구조 라벨로 인식되어 그 아래 모든 항목의 카테고리 열에 할당됩니다. 6개 섹션이 있는 메뉴는 각 항목 행에 올바른 카테고리가 채워진 출력을 생성합니다 — 추출 후 수동 카테고리 태깅이 필요 없습니다. 섹션이 페이지 나누기에 걸쳐 있는 다중 페이지 메뉴도 카테고리 컨텍스트를 연속적으로 유지합니다.

주의가 필요한 경우

장식이 많은 캘리그래피 또는 화려한 디스플레이 글꼴. 양식화된 문자 형태는 문자 수준 인식 오류를 유발할 수 있습니다. 캘리그래피 스타일이 많이 적용된 요리 이름은 "Caesar Salad" 대신 "Caesat Sa[ad"로 인식될 수 있습니다. 깔끔한 세리프 또는 산세리프 글꼴을 사용한 메뉴는 크기가 크고 장식적이어도 안정적으로 추출됩니다. 메뉴에서 캘리그래퍼가 디자인한 헤더 글꼴을 요리 이름에 사용하는 경우, 출력 결과에서 해당 항목을 확인하시기 바랍니다.

비라틴 문자 메뉴. 이 도구는 모든 문자 체계의 메뉴에서 요리 이름과 구조를 추출합니다. 언어와 관계없이 동일한 시각적 계층 인식이 작동합니다. 그러나 새로운 문자 체계의 처음 몇 항목에서는 정확성을 확인하세요. 비라틴 문자 체계의 문자 수준 인식은 글꼴 선명도와 문자 밀도에 따라 달라집니다. 명확한 서체의 인쇄된 중국어 및 일본어 메뉴는 잘 추출되지만, 빽빽한 손글씨 한자 또는 화려한 아랍어 캘리그래피는 정확도가 낮을 수 있습니다.

비스듬히 찍거나, 접히거나, 그림자가 진 사진 — 그리고 가격이 없는 메뉴. 가파른 각도로 촬영한 사진은 텍스트 기하학을 왜곡하여 추출 정확도를 떨어뜨립니다. 중앙에 접힌 자국이 있는 메뉴 사진은 접힌 선을 따라 문자가 손실될 수 있습니다. 인쇄된 가격이 없는 메뉴는 요리 이름과 설명이 올바르게 추출되며, 가격 열은 비어 있는 상태로 유지됩니다. AI는 원본 이미지에 가격이 없을 때 가격을 임의로 생성하지 않습니다.

자주 묻는 질문

"Appetizers" 같은 섹션 헤더와 실제 요리 이름을 구분할 수 있나요?

네, 이것이 핵심 기능입니다. 기존 OCR은 텍스트를 선형으로 읽어 "Appetizers"를 데이터 행으로 처리합니다. 이 도구는 시각적 레이아웃과 의미적 맥락을 읽어 섹션 헤더를 구조 라벨로 인식하고, 그 아래의 모든 요리를 Category 열에 할당합니다. 결과적으로 각 요리 행에 올바른 카테고리가 채워지고, 섹션 헤더가 가격이 비어 있는 유령 요리로 나타나지 않습니다. 인쇄된 메뉴, 손글씨 칠판, 여러 페이지로 된 PDF 모두에서 작동합니다.

메뉴 사진에서 채식, 글루텐 프리, 견과류 프리 같은 식이 태그를 추출할 수 있나요?

네. "Dietary Tags" 열을 정의하면 AI가 모든 형식의 식이 표시를 읽습니다: 텍스트 라벨(V, VG, GF, NF, DF), 아이콘 기반 표시, 또는 요리 설명의 인라인 약어(예: 설명 끝의 "(v)" 또는 "(gf)"). AI는 각 표시가 속한 요리의 맥락에서 읽습니다 — "Pasta Primavera" 옆의 "GF" 라벨은 해당 요리 행의 Dietary Tags 열에만 채워집니다. 텍스트 없이 아이콘만 사용하는 메뉴라면 옵션과 함께 열을 정의하세요(예: "Dietary Tags (options: Vegetarian, Vegan, Gluten-Free, Nut-Free, Dairy-Free)") — AI가 아이콘을 해석하여 지정된 카테고리에 매핑합니다.

메뉴에 칼로리가 인쇄되어 있지 않으면 모든 행이 실패하나요, 아니면 도구가 열을 건너뛰나요?

둘 다 아닙니다. 열 이름으로 "Calories (if printed)"를 입력하면 AI는 메뉴에 표시된 칼로리 값을 추출하고, 칼로리 정보가 인쇄되지 않은 요리의 셀은 비워 둡니다. 45개 항목 중 15개에만 칼로리 데이터가 있는 메뉴는 45개 행을 생성합니다 — 45개 모두 완전한 요리 이름, 설명, 가격이 있고, 15개는 칼로리 값이 채워지며, 30개는 Calories 셀이 비어 있습니다. 결과는 행이 삭제되거나 데이터가 조작되지 않은 완전한 데이터셋입니다. 동일한 로직이 모든 메뉴에 없을 수 있는 모든 필드에 적용됩니다: 매운맛 수준 표시, 항목 코드, 또는 일부 항목에만 나타나는 식이 태그 등.

여러 레스토랑 지점의 메뉴를 한 번에 일괄 처리하면서 각 지점의 데이터를 분리할 수 있나요?

네. 모든 지점의 메뉴 사진을 단일 배치로 업로드하세요. 지점별로 데이터를 분리하려면 필드 목록에 "Location" 또는 "Restaurant Name" 열을 포함하세요 — AI는 메뉴 자체에서 이를 추출하지 않지만, 배치 업로드 파일 이름 지정을 사용할 수 있습니다: 업로드 전에 각 파일에 지점 식별자를 이름으로 지정하면 출력 스프레드시트에 지점 키 역할을 하는 파일 이름 열이 포함됩니다. 또는 각 지점의 메뉴를 별도의 배치 작업으로 업로드하세요 — 열 구성은 동일하게 유지되고 각 배치는 자체 출력 파일을 생성합니다. 20개 이상의 지점에서 분기별로 메뉴를 업데이트하는 레스토랑 그룹의 경우 추출 템플릿을 한 번 저장하고 각 분기 업데이트 배치에 실행하세요.

손글씨 메뉴도 처리할 수 있나요?

네, 가능하지만 정확도에 영향을 주는 조건이 있습니다. AI는 블록체, 혼합 대소문자 인쇄체, 표준 필기체 등 다양한 손글씨로 학습되었습니다. 칠판 특선 메뉴를 정면에서 고르고 확산된 조명 아래 촬영하면 추출 결과가 우수합니다 — 항목 이름, 가격, 짧은 설명이 안정적으로 추출됩니다. 손글씨 정확도에 가장 큰 영향을 주는 세 가지 요인은 조명, 각도, 글자 형태의 장식성입니다. 최상의 결과를 얻으려면: 게시판을 정면에서 자연광 또는 고른 인공 조명 아래 촬영하고, 메뉴 영역이 프레임을 가득 채우게 하며, 그림자에 가려진 텍스트가 없는지 확인하세요. 일부 문자가 잘못 읽히더라도 — "Tomato" 대신 "TomatO"처럼 — 오류는 대개 경미하며 출력 스프레드시트에서 쉽게 확인할 수 있습니다.

📮 contact email: [email protected]