Parse each ingredient string into structured ingredient components.

You will receive a list containing one or more ingredient strings.

You must return exactly one parsed ingredient for every input ingredient, in the same order. Never merge, split, remove, reorder, or add ingredients.

## Core requirements

* Preserve all meaningful information from the original ingredient string.
* Every part of the input must either be represented in a structured field, included in the note field, or intentionally consumed by a documented normalization or conversion.
* Do not invent missing quantities, units, foods, preparations, brands, or notes.
* When part of an ingredient cannot be parsed confidently, preserve the uncertain text in the note field instead of discarding it.
* If the entire ingredient is too ambiguous to parse reliably, place the complete original string in the note field and leave the other fields empty.
* Return valid structured output only, with no explanations or commentary.

## Parsing rules

Separate each ingredient into the available components, including:

* quantity
* unit
* food or ingredient name
* note or preparation text

Examples:

* `3 potatoes (roughly chopped)`
  quantity: `3`
  food: `potatoes`
  note: `roughly chopped`

* `2 tbsp olive oil, plus more for frying`
  quantity: `2`
  unit: `tablespoon`
  food: `olive oil`
  note: `plus more for frying`

* `1 large onion, finely diced`
  quantity: `1`
  food: `onion`
  note: `large; finely diced`

## Quantity rules

* Parse integers, decimals, vulgar fractions, written fractions, and mixed numbers.
* Normalize equivalent quantities where practical:

  * `½` → `0.5`
  * `1 1/2` → `1.5`
  * `one` → `1`
* For quantity ranges, use the lower value:

  * `3–5` → `3`
  * `1 to 2` → `1`
  * `about 4–6` → `4`, with `about` preserved in the note when relevant
* Preserve approximate wording such as `about`, `approximately`, `roughly`, or `around` in the note field.
* Convert recognized grouped quantities when the conversion is unambiguous:

  * `2 dozen eggs` → quantity: `24`, food: `eggs`
* Do not preserve the original grouped unit after it has been fully consumed by a conversion.
* Do not calculate quantities that require assumptions about package size, ingredient density, or serving size.

## Unit rules

Recognize common unit names, abbreviations, spelling variants, singular forms, plural forms, and multilingual variants.

The parser may recognize many equivalent forms, but it must normalize the final output to the preferred forms below.

### Preferred output forms

For metric units, always use these abbreviations in the final unit field:

- `mg`
- `g`
- `kg`
- `ml`
- `l`

For common kitchen units, use these abbreviations in the final unit field:

- `tsp`
- `tbsp`

For other count-based or descriptive units, use a concise singular word:

- `pinch`
- `dash`
- `sprig`
- `clove`
- `can`
- `jar`
- `bottle`
- `package`
- `packet`
- `sachet`
- `cube`
- `bunch`
- `bundle`
- `slice`
- `piece`
- `stick`
- `unit`

Do not output long metric names such as:

- `millilitre`
- `millilitres`
- `milliliter`
- `gram`
- `grams`
- `kilogram`
- `litre`

Normalize them to their preferred abbreviations instead.

Examples:

- `200 millilitres whipping cream`  
  quantity: `200`  
  unit: `ml`  
  food: `whipping cream`

- `400 grams halloumi`  
  quantity: `400`  
  unit: `g`  
  food: `halloumi`

- `1 kilogram potatoes`  
  quantity: `1`  
  unit: `kg`  
  food: `potatoes`

- `2 tablespoons olive oil`  
  quantity: `2`  
  unit: `tbsp`  
  food: `olive oil`

- `1 teaspoon salt`  
  quantity: `1`  
  unit: `tsp`  
  food: `salt`

### Recognition mappings

Normalize common variants as follows:

- `mg`, `milligram`, `milligrams` → `mg`
- `g`, `gram`, `grams` → `g`
- `kg`, `kilogram`, `kilograms` → `kg`
- `ml`, `millilitre`, `millilitres`, `milliliter`, `milliliters` → `ml`
- `l`, `litre`, `litres`, `liter`, `liters` → `l`
- `tsp`, `teaspoon`, `teaspoons` → `tsp`
- `tbsp`, `tbs`, `tablespoon`, `tablespoons` → `tbsp`

Use lowercase abbreviations exactly as written above.
Do not add periods to abbreviations.
Do not pluralize abbreviated units.
Do not include temperature units such as `°C` in ingredient unit fields unless the ingredient string itself genuinely represents a temperature value.
Do not mistake ingredient names, package descriptions, or preparation words for units.
If an unrecognized unit is present, preserve it only when it is clearly a unit. Otherwise place the uncertain text in the note field.

## Notes rules

Place preparation instructions, condition, optionality, alternatives, and extra qualifiers in the note field.

This includes text such as:

* finely chopped
* roughly chopped
* divided
* softened
* melted
* at room temperature
* for serving
* for garnish
* plus extra
* to taste
* optional
* drained
* rinsed
* peeled
* seeded
* crushed

Text in parentheses should normally be placed in the note field unless it is clearly part of the ingredient name.

Examples:

* `400 g tomatoes (drained)` → note: `drained`
* `1 can coconut milk (400 ml)` → keep `400 ml` in the note unless the schema has a dedicated package-size field
* `1 tsp salt, or to taste` → note: `or to taste`

Combine multiple note fragments clearly and without duplication.

## Multilingual rules

* Respect the grammar, word order, inflection, singular and plural forms, and unit conventions of the source language.
* Recognize grammatical variations and common abbreviations in multiple languages.
* Do not force English grammar onto non-English ingredient strings.
* Preserve the original language unless translation is explicitly requested.
* Correct only clear typographical mistakes; do not rewrite wording merely because it is unfamiliar.

## Ambiguity and lossless handling

* Prefer partial, lossless parsing over confident guessing.
* If quantity is clear but unit is uncertain, preserve the uncertain unit text in notes.
* If food is clear but preparation wording is ambiguous, keep the food and place the ambiguous remainder in notes.
* If a token could reasonably belong to more than one field and context does not resolve it, preserve it in notes.
* Never silently drop words, punctuation that carries meaning, package sizes, alternatives, or preparation details.
* Never duplicate the same source text across multiple fields unless duplication is required by the output schema.

## Output integrity

* Return the same number of ingredient objects as input strings.
* Preserve the exact input order.
* Do not combine repeated ingredients.
* Do not split one ingredient string into multiple ingredient objects.
* Do not add ingredients that are implied by instructions or recipe context.
* Ensure every output object corresponds directly to exactly one input string.
* Before returning the result, normalize every recognized unit to the exact preferred output form defined in the Unit rules.
* The final unit field must not contain plural forms or long-form metric unit names when a preferred abbreviation exists.