Bachelor's Thesis

Automatic Extraction of Restaurant Menus

Final Thesis 4.8 MB

Author of thesis: Bc. Dmytro Trifonov

Acad. year: 2025/2026

Supervisor: Ing. Jan Kohút

Reviewer: Ing. Markéta Juránková, Ph.D.

Abstract:

Finding what a specific restaurant serves — or which nearby venue offers a particular dish — currently requires visiting each website individually: no dedicated application aggregates menu data across independently operated restaurants. Menus appear in heterogeneous formats (HTML pages, PDF documents, and images), making automated cross-venue search technically challenging. This thesis presents the design and implementation of a system that automatically extracts structured menu items from arbitrary restaurant websites and exposes them through a unified search interface. The system processes restaurant websites through a three-stage pipeline: headless crawling with menu URL detection and SimHash-based deduplication; content processing using CLIP image classification, PaddleOCR, and MiniLM-based relevance scoring; and structured item extraction with gpt-4o-mini. The backend is built on ASP.NET Core 10 following clean architecture principles with SQL Server persistence and Hangfire background jobs; the resulting web application supports venue management, extraction scheduling, and manual draft corrections. Extraction quality was assessed through manual output inspection on a live dataset of 384 venues. A user study with five participants assessed the search interface, demonstrating an 85 % task completion rate (17 of 20 task instances) with a median task time of 85 seconds.

Keywords:

menu extraction, web crawling, Playwright, CLIP, PaddleOCR, MiniLM, gpt-4o-mini, ASP.NET Core, React, clean architecture

Date of defence

16.06.2026

Result of the defence

Defended (thesis was successfully defended)

znamkaCznamka

Grading

C

Process of defence

Student nejprve prezentoval výsledky, kterých dosáhl v rámci své práce. Komise se poté seznámila s hodnocením vedoucího a posudkem oponenta práce. Student následně odpověděl na otázky oponenta a na další otázky přítomných. Komise se na základě posudku oponenta, hodnocení vedoucího, přednesené prezentace a odpovědí studenta na položené otázky rozhodla práci hodnotit stupněm C.

Topics for thesis defence

  1. Ukažte prosím reálné příklady extrakce dat z HTML, PDF a obrázku.
  2. Jak by bylo možné vyhodnotit kvalitu extrakce dat?
  3. Kolik manuálních testů jste provedl?

Language of thesis

English

Faculty

Department

Study programme

Information Technology (BIT)

Composition of Committee

doc. Ing. Tomáš Martínek, Ph.D. (předseda)
doc. Ing. Michal Španěl, Ph.D. (místopředseda)
Ing. Jiří Hynek, Ph.D. (člen)
Ing. Filip Orság, Ph.D. (člen)
Ing. Vladimír Bartík, Ph.D. (člen)

Supervisor’s report
Ing. Jan Kohút

The student worked independently and practically did not consult the solution; however, from my perspective, the idea and the approach to the solution are appropriate.

Evaluation criteria Verbal classification
Information about assignment

The aim of the assignment was to implement an application for automatically obtaining restaurant menus from the web and managing them. I consider the assignment to be slightly more difficult, since it requires combining many technologies from different areas. The result of the work meets expectations.

Work with literature
Activity during solution, consultations, communication

The student decided to work independently. Only the initial idea was consulted at the beginning of the academic year, and the progress of the solution was consulted once at the beginning of the summer semester.

Activity during completion

I saw the work before completion and provided one round of feedback.

Publication activity, awards
Points proposed by supervisor: 70

Grade proposed by supervisor: C

Student se při vypracování bakalářské práce výrazně spoléhal na pomoc asistentů, díky čemuž vytvořil velmi kvalitní aplikaci s velkým množstvím funkcí a hierarchickou správou dat. Na druhou stranu je technická zpráva, pravděpodobně hlavně generovaná, hůře čitelná. Práce rovněž postrádá vyhodnocení kvality extrakce dat, což je klíčový bod pro využitelnost aplikace. Výslednou práci hodnotím známkou C.

Evaluation criteria Verbal classification Points
The difficulty of the assignment

Evaluation level: more difficult assignment

S ohledem na to, že se jedná o bakalářskou práci, jde o obtížnější zadání.

Presentation level of the technical report

Práce je vhodně strukturovaná a jednotlivé kapitoly na sebe přirozeně navazují. Technická zpráva nese jednoznačnou stopu využití jazykových modelů, což autor v úvodu přiznává. To by samo o sobě nebylo chybou, kdyby student text více revidoval. Práce obsahuje obsáhlé a podrobné technické pasáže s nepodstatnými detaily (např. „…latest migration (20260430221612_AddCuisinesJsonToVenue)…“), které čtenáře unavují, trhají pozornost a jsou zbytečné. Některé informace (user roles) se vyskytují v textu nesčetněkrát. Práce postrádá ilustrační obrázky pro lepší pochopení.

70
Formal preparation of a technical report

Po jazykové stránce je práce na vysoké úrovni. Mezi drobné výhrady bych zařadila:

  • dlouhé mezery mezi odkazováním obrázku/tabulky v textu a jeho finálním umístěním (např. tabulka 2.1 je zmíněna na straně 12, ale nachází se na straně 17),
  • seznam obrázků nepoužívá krátké nadpisy, ale celý text,
  • rozdílná čísla v obrázku 6.1 než uvádí popisek a text,
  • absolutně nepřehledná tabulka 2.1.
85
Realisation output

Výstupem práce je komplexní systém, který automaticky extrahuje jídelní lístky a následně umožňuje v datech vyhledávat, upravovat a doplňovat je. Výsledná webová aplikace disponuje velkým množstvím funkcí a dosahuje komerční úrovně jak na frontendové, tak backendové straně. Podobně jako u textové části je i zde patrné využití Copilotu (nebo podobných systémů). Studentovi se však s jeho pomocí podařilo vytvořit opravdu kvalitní aplikaci.

Výhradou je chybějící vyhodnocení systému pro extrakci dat. Sám autor přiznává, že anotace dat nebyla dokončena, a proto není možné ověřit, jak spolehlivě systém informace extrahuje. Aplikace tak byla vyhodnocena pouze formou user study na pěti respondentech a velkým množstvím automatizovaných testů.

85
Usability of results

Výsledná aplikace by na trhu určitě našla své místo, protože podobný nástroj, který by automaticky sumarizoval jídelní lístky z různých zdrojů, chybí. Překážkou je však vysoká výpočetní náročnost a v tomto momentě neověřená spolehlivost extrakce informací.

The extent to which the requirements of the assignment have been met

Evaluation level: assignment fulfilled

Zadání bylo splněno. Student zvolil náročnější zpracování problematiky.

Extent of the technical report

Evaluation level: exceeds the usual extent

Práce je delšího charakteru, závěr je na straně 68. Některé části jsou příliš obsáhlé a podrobné. Informace se v textu opakují.

Work with literature

Student správně a vhodně cituje relevantní zdroje, převzaté prvky jsou řádně odlišeny a smysluplně využity ve vlastní práci.

95
Topics for thesis defence:
  1. Ukažte prosím reálné příklady extrakce dat z HTML, PDF a obrázku.
  2. Jak by bylo možné vyhodnotit kvalitu extrakce dat?
Points proposed by reviewer: 75

Grade proposed by reviewer: C

Responsibility: Mgr. et Mgr. Hana Odstrčilová