FAQ & Services

FAQ & Services

Common questions, the services and tools that power Beer Check, and known limitations.

Check a beer

Frequently asked questions

Data services

Beer Check integrates several external APIs to provide dietary and allergen data.

Barnivore ↗Name lookup & label photo flow

Primary source for vegan and vegetarian status. Community-maintained database of alcoholic beverages.

Open Food Facts ↗Barcode scan, allergen data, dietary tags

Open-source product database. Provides allergen tags, dietary labels (vegan, gluten-free), and barcode-to-product resolution.

UPC Item DB ↗Barcode scan (optional fallback)

Optional fallback for barcode-to-product name resolution when Open Food Facts has no entry. Disabled by default.

PunkAPI ↗Beer name verification (optional)

Brewdog beer catalogue. Used to verify the matched beer name against a canonical name via Jaro-Winkler similarity. Disabled by default.

OpenBreweryDB ↗Brewery catalog seeding

Open-source brewery catalogue used to pre-populate the backend brewery database.

Wikidata ↗Brewery catalog seeding

Additional brewery data used to supplement the OpenBreweryDB catalog.

Tools & libraries

The backend is a Spring Boot service running on Java. These are the key libraries and services it uses.

Tesseract OCR (Tess4j)

Open-source OCR engine used as the primary text extractor for beer label images. Runs locally on the server.

OCR.space

Cloud OCR API used as a fallback when Tesseract's confidence score is below the threshold (default 0.85).

Google Cloud Vision

AI-powered OCR service for high-accuracy label text extraction. Activated when configured via the ocr.provider setting.

ZXing ("Zebra Crossing")

Open-source barcode decoding library. Decodes EAN-13, EAN-8, UPC-A, UPC-E, CODE-128, and QR Code formats from uploaded images.

Spring Boot 3 / Java 21

Backend framework. Handles HTTP routing, multipart uploads, validation, and database access via JDBC.

PostgreSQL + Flyway

Relational database storing the beer and brewery catalog, cached dietary results, and image-hash caches for fast repeat lookups.

Apache Commons Text

Provides fuzzy string matching (Jaro-Winkler similarity) used to match OCR-extracted text against the beer catalog.

Known limitations

Free-tier cold starts — the backend hibernates after 15 minutes of inactivity. The first request after a pause typically takes 20–30 seconds.

OCR accuracy depends heavily on photo quality. Blurry, dark, angled, or partially obscured label photos produce unreliable results.

Database coverage is incomplete. Many craft, regional, and international beers are not in Barnivore or Open Food Facts.

Allergen data may be absent. Not all database entries include complete allergen information — an empty allergens list is not a guarantee of allergen-free.

Ingredients change. Brewery recipes and formulations change over time; database entries may not reflect the current recipe. Always verify with the manufacturer for allergy concerns.

Cask ales are often fined with isinglass (fish-derived) and are frequently not suitable for vegetarians or vegans — even if the database entry says otherwise. The keg or bottled version of the same beer may have been evaluated. See our cask ales guide →

Barcode coverage is limited to Open Food Facts and optionally UpcItemDb. Niche or regional products without a database entry will not be found.

Non-Latin scripts are not well supported by the OCR pipeline. Labels in Cyrillic, Arabic, CJK, or other scripts will likely fail to extract meaningful text.