AI for restaurant menus

    Menu Digitisation: Printed Menus to Structured Data

    A photo of the menu goes in. Dishes, prices, modifiers, allergens and dietary tags come out — in the shape a delivery platform or a POS actually wants.

    • Reads printed, handwritten and PDF menus, in any layout
    • Allergens and dietary tags derived from the dish description
    • Output shaped for delivery platforms, not a generic dump
    Printed restaurant menu being converted into structured rows of dishes, prices and allergen tags
    Per menu
    ~30 secPer menu
    Chalkboards to PDFs
    Any layoutChalkboards to PDFs
    Allergens flagged
    EU 14Allergens flagged
    Reply from the engineer
    24hReply from the engineer

    What is menu digitisation?

    Menu digitisation is turning a menu that exists as a picture — a print-ready PDF, a photograph of a laminated card, a chalkboard — into structured records: one row per dish, with name, description, price, section, and whatever else the destination system needs.

    It sounds trivial until you look at a real menu. Prices sit in a column that only lines up visually. A dish has two prices for two portion sizes. Half the section is in one language and the specials are handwritten. There are modifiers that apply to some dishes but not others, and the only thing indicating that is a footnote and a symbol.

    The work is usually done by hand, and at scale it is genuinely expensive. Onboarding a restaurant onto a delivery platform means someone retyping the whole menu, and the cost of that typing is why platforms and POS vendors cap how many venues they can bring on in a month.

    The second half of the job is allergens. A description says "pesto" and the allergen list needs to say nuts and milk. That inference is a different problem from reading the text, it carries real consequences when it is wrong, and it is the part where a system should flag rather than assert.

    How it works

    1. 1

      Send the menu

      A photograph, a PDF, a scan, or a link to the venue's existing menu page.

    2. 2

      Read the layout

      Sections, dish names, descriptions and prices are separated out, including multi-column and multi-price layouts.

    3. 3

      Enrich

      Allergens and dietary tags are derived from the description, with anything uncertain flagged for a human.

    4. 4

      Deliver

      Structured records in the shape your platform ingests — or a spreadsheet, if a person is doing the upload.

    What comes out

    FieldExampleConfidence
    Dish nameTagliatelle al ragù0.97
    SectionPrimi0.95
    Price and variants€14.00 / €9.50 small0.96
    DescriptionSlow-cooked beef ragù, fresh egg pasta0.94
    AllergensGluten, egg, milk0.86
    Dietary tagsContains meat; not vegetarian0.91

    We have built this

    We built a menu digitiser that converts restaurant menus — printed, handwritten or PDF — into structured data in about thirty seconds, extracting dishes, prices and allergens ready for delivery platforms. The case study covers the layouts that broke it, why allergen inference is held to a different standard than price extraction, and how the confidence threshold was set so that an uncertain allergen never ships silently.

    Read the full case study →

    Retyping vs generic OCR vs purpose-built

    Retyping by handGeneric OCRPurpose-built
    Time per menu45-90 minutesMinutes, then manual repairAbout 30 seconds
    Multi-column layoutsFineScrambles the columnsHandled
    AllergensIf the typist knowsNoDerived and flagged
    Handwritten specialsFineRarelyYes, with lower confidence
    Output shapeWhatever was typedLoose textThe schema your platform ingests

    Delivers into: Deliveroo · Uber Eats · Just Eat · Lightspeed · Square · CSV / REST API

    Frequently asked questions

    Can it really read a handwritten specials board?

    Often, yes — we built the handwriting side for forms and it carries over. But the confidence is lower than on printed text and it should be. A specials board photographed at an angle in bad light is the hardest input in this whole category, and the right behaviour is to return what it is sure of and flag the rest, not to invent a dish name.

    How reliable are the allergens?

    Reliable enough to be a first pass, not reliable enough to be the final word, and we will not pretend otherwise. Deriving allergens from a dish description is inference: "pesto" usually means pine nuts and parmesan, but not in every kitchen. The system flags what it infers as inferred, separately from what the menu states outright, so a human confirms before anything reaches a customer with an allergy.

    What about menus in more than one language?

    Common, and handled — a bilingual menu comes back with both, linked to the same dish rather than as two unrelated rows. Where a dish name is a proper noun that should not be translated, it is left alone.

    Can it match dishes to an existing catalogue?

    Yes, and for platforms this is usually the real requirement. Reading the menu is the easy half; deciding that this venue's "Margherita" is the same product as the one already in your catalogue is the half that takes judgement. We do that matching with a confidence score and leave the uncertain ones for review.

    How does it handle prices that changed?

    It reads what is on the menu, which is the honest answer. If the printed card is out of date, the data will be too. Where you need current prices, the sensible pattern is to digitise once and then take updates from the POS rather than re-photographing the card.

    What does a project look like?

    It starts with a free assessment: send us a handful of menus — including the messy ones, the handwritten board and the bilingual card — and we will run them and show you exactly what came out. Within 24 hours, from the engineer who would build it. If your menus turn out to be easy, we will tell you that too, and the project will be smaller than you expected.

    What retyping menus is costing you

    See what manual data entry is costing you

    Manual data entry today
    €22,917 per year · 917 hours
    MindX could save you up to
    €20,625 per year
    + 825 hours per year

    Rough estimate at ~90% automation over 220 working days a year. Your exact numbers come from the free assessment.

    Currently accepting 2 new projects this month

    Get a Free Assessment

    Send us a few of your documents and we'll tell you exactly what can be read from them, how accurately, and how much time it would save. No commitment.

    Response within 24 hours100% confidentialNo sales pressure

    See what manual data entry is costing you

    Manual data entry today
    €22,917 per year · 917 hours
    MindX could save you up to
    €20,625 per year
    + 825 hours per year

    Rough estimate at ~90% automation over 220 working days a year. Your exact numbers come from the free assessment.

    Or

    Prefer to talk live? Book a call directly.

    No preparation needed · Get actionable insights · Zero obligation

    Join 20+ companies who started here