A test run is a single execution of a benchmark test using a defined model configuration.
Each run represents how a particular large language model (LLM) — such as GPT-4, Claude-3, or Gemini — performed on a given task at a specific time, with specific settings.
A test run includes:
Together, test runs make it possible to compare models, providers, and configurations across benchmarks in a transparent and reproducible way.
{'document-type': ['index-card'], 'writing': ['handwritten', 'typed', 'printed'], 'century': [20], 'layout': ['table', 'form'], 'task': ['transcription', 'document-understanding', 'data-correction'], 'language': ['de', 'fr']}
| Provider | anthropic |
| Model | claude-opus-4-5-20251101 |
| Temperature | 0.0 |
| Dataclass | Table |
| Normalized Score | 91.12 % |
| Test time | unknown seconds |
Extract all information from this personnel card table and return it as a structured JSON object. The card contains rows documenting employment history with positions, locations, salary information, dates, and remarks.
REQUIRED JSON STRUCTURE:
```json
{
"rows": [
{
"row_number": 1,
"dienstliche_stellung": {
"diplomatic_transcript": "exact text from card",
"interpretation": "expanded/standardized form or null",
"is_crossed_out": false
},
"dienstort": {
"diplomatic_transcript": "exact text from card",
"interpretation": "expanded/standardized form or null",
"is_crossed_out": false
},
"gehaltsklasse": {
"diplomatic_transcript": "exact text from card",
"interpretation": "expanded/standardized form or null",
"is_crossed_out": false
},
"jahresgehalt_monatsgehalt_taglohn": {
"diplomatic_transcript": "exact text from card",
"interpretation": "standardized numeric form or null",
"is_crossed_out": false
},
"datum_gehaltsänderung": {
"diplomatic_transcript": "exact text from card",
"interpretation": "YYYY-MM-DD format or null",
"is_crossed_out": false
},
"bemerkungen": {
"diplomatic_transcript": "exact text from card",
"interpretation": "expanded/standardized form or null",
"is_crossed_out": false
}
}
]
}
```
COLUMN DEFINITIONS:
1. **dienstliche_stellung**: Official position or job title (e.g., "Assistent", "Professor", "Sekretär")
2. **dienstort**: Place of service or work location (e.g., "Basel", "Zürich")
3. **gehaltsklasse**: Salary class or grade (e.g., "III", "IV", roman numerals or numbers)
4. **jahresgehalt_monatsgehalt_taglohn**: Salary amount (annual/monthly/daily wage)
5. **datum_gehaltsänderung**: Date of salary change or effective date
6. **bemerkungen**: Remarks, notes, or additional comments
FIELD EXTRACTION RULES:
**diplomatic_transcript** (REQUIRED for all fields):
- Transcribe EXACTLY as written on the card
- Include all abbreviations, punctuation, and formatting as they appear
- Preserve original capitalization and spacing
- Include currency symbols and separators (e.g., "Fr. 2'400.-", "3.700.-")
- For dates, copy the exact format (e.g., "1. Jan. 1946", "1.April 1945")
- Use empty string "" for empty cells
- Be sure to escape ditto marks (repetition marks such as `"` indicating "same as above")
- DO NOT expand abbreviations or standardize formats
- Do not transcribe checkmarks
**interpretation** (OPTIONAL - use null if not applicable):
- For ditto marks (repetition marks such as `"`): Replace with the actual repeated value from the previous row in the same column
- For example, if previous row's dienstliche_stellung is "Hilfsleiterin" and current row has `"`, interpret as "Hilfsleiterin"
- Do NOT add explanatory text like "wie oben" or similar - just provide the repeated value
- Never expand abbreviations
- For dates: Convert to ISO format YYYY-MM-DD
- "1. Jan. 1946" → "1946-01-01"
- "1.April 1945" → "1945-04-01"
- For salary amounts: Extract numeric value only (remove currency symbols, separators)
- "Fr. 2'400.-" → "2400"
- "3.700.-" → "3700"
- "5.094.-" → "5094"
"6,30.-" → "6.3"
- For salary class: Convert roman numerals to arabic if clear
- "III" → "3"
- "IV" → "4"
- Do not convert roman numerals to arabic if not salary, date, or salary class
- Use null if no interpretation/expansion is needed or if the field is empty
- "+ {word}" where {word} is a word does not need interpretation
**is_crossed_out** (REQUIRED for all fields):
- Set to true if text in this field is crossed out, struck through, or deleted
- Set to false if text is normal (not crossed out)
- Empty cells should have is_crossed_out: false
ROW HANDLING:
- Number rows sequentially starting from 1 (top to bottom)
- Include ALL rows that have ANY content in ANY column
- Empty rows (all cells empty) should be omitted
- A row with only one filled cell should still be included
IMPORTANT NOTES:
- Return ONLY the JSON object, no additional text or explanation
- Every field must have all three sub-fields: diplomatic_transcript, interpretation, is_crossed_out
- diplomatic_transcript must never be null (use empty string "" for empty cells)
- interpretation can be null when no expansion/standardization applies
- Process the entire table from top to bottom
- Maintain consistent row numbering throughout
no valid result
| Fuzzy Score | F1 micro / macro | Micro precision/recall | Tue/False Positives | |||||
| n/a | 0.91 | 0.89 | 0.96 | 0.87 | 61 | 2186 | 94 | 332 |
| Micro Precision | Micro Recall | Instances | TP | FP | FN | |||
| Pricing Date: n/a, n/a. | Tokens: 245.6K IT + 45.7K OT = 291.3K TT | Cost: 1.228$ + 1.142$ = 2.370$ |
{'document-type': ['index-card'], 'writing': ['handwritten', 'typed', 'printed'], 'century': [20], 'layout': ['table', 'form'], 'task': ['transcription', 'document-understanding', 'data-correction'], 'language': ['de', 'fr']}
| Provider | openai |
| Model | x-ai/grok-4 |
| Temperature | 0.0 |
| Dataclass | Table |
| Normalized Score | 55.97 % |
| Test time | unknown seconds |
Extract all information from this personnel card table and return it as a structured JSON object. The card contains rows documenting employment history with positions, locations, salary information, dates, and remarks.
REQUIRED JSON STRUCTURE:
```json
{
"rows": [
{
"row_number": 1,
"dienstliche_stellung": {
"diplomatic_transcript": "exact text from card",
"interpretation": "expanded/standardized form or null",
"is_crossed_out": false
},
"dienstort": {
"diplomatic_transcript": "exact text from card",
"interpretation": "expanded/standardized form or null",
"is_crossed_out": false
},
"gehaltsklasse": {
"diplomatic_transcript": "exact text from card",
"interpretation": "expanded/standardized form or null",
"is_crossed_out": false
},
"jahresgehalt_monatsgehalt_taglohn": {
"diplomatic_transcript": "exact text from card",
"interpretation": "standardized numeric form or null",
"is_crossed_out": false
},
"datum_gehaltsänderung": {
"diplomatic_transcript": "exact text from card",
"interpretation": "YYYY-MM-DD format or null",
"is_crossed_out": false
},
"bemerkungen": {
"diplomatic_transcript": "exact text from card",
"interpretation": "expanded/standardized form or null",
"is_crossed_out": false
}
}
]
}
```
COLUMN DEFINITIONS:
1. **dienstliche_stellung**: Official position or job title (e.g., "Assistent", "Professor", "Sekretär")
2. **dienstort**: Place of service or work location (e.g., "Basel", "Zürich")
3. **gehaltsklasse**: Salary class or grade (e.g., "III", "IV", roman numerals or numbers)
4. **jahresgehalt_monatsgehalt_taglohn**: Salary amount (annual/monthly/daily wage)
5. **datum_gehaltsänderung**: Date of salary change or effective date
6. **bemerkungen**: Remarks, notes, or additional comments
FIELD EXTRACTION RULES:
**diplomatic_transcript** (REQUIRED for all fields):
- Transcribe EXACTLY as written on the card
- Include all abbreviations, punctuation, and formatting as they appear
- Preserve original capitalization and spacing
- Include currency symbols and separators (e.g., "Fr. 2'400.-", "3.700.-")
- For dates, copy the exact format (e.g., "1. Jan. 1946", "1.April 1945")
- Use empty string "" for empty cells
- Be sure to escape ditto marks (repetition marks such as `"` indicating "same as above")
- DO NOT expand abbreviations or standardize formats
- Do not transcribe checkmarks
**interpretation** (OPTIONAL - use null if not applicable):
- For ditto marks (repetition marks such as `"`): Replace with the actual repeated value from the previous row in the same column
- For example, if previous row's dienstliche_stellung is "Hilfsleiterin" and current row has `"`, interpret as "Hilfsleiterin"
- Do NOT add explanatory text like "wie oben" or similar - just provide the repeated value
- Never expand abbreviations
- For dates: Convert to ISO format YYYY-MM-DD
- "1. Jan. 1946" → "1946-01-01"
- "1.April 1945" → "1945-04-01"
- For salary amounts: Extract numeric value only (remove currency symbols, separators)
- "Fr. 2'400.-" → "2400"
- "3.700.-" → "3700"
- "5.094.-" → "5094"
"6,30.-" → "6.3"
- For salary class: Convert roman numerals to arabic if clear
- "III" → "3"
- "IV" → "4"
- Do not convert roman numerals to arabic if not salary, date, or salary class
- Use null if no interpretation/expansion is needed or if the field is empty
- "+ {word}" where {word} is a word does not need interpretation
**is_crossed_out** (REQUIRED for all fields):
- Set to true if text in this field is crossed out, struck through, or deleted
- Set to false if text is normal (not crossed out)
- Empty cells should have is_crossed_out: false
ROW HANDLING:
- Number rows sequentially starting from 1 (top to bottom)
- Include ALL rows that have ANY content in ANY column
- Empty rows (all cells empty) should be omitted
- A row with only one filled cell should still be included
IMPORTANT NOTES:
- Return ONLY the JSON object, no additional text or explanation
- Every field must have all three sub-fields: diplomatic_transcript, interpretation, is_crossed_out
- diplomatic_transcript must never be null (use empty string "" for empty cells)
- interpretation can be null when no expansion/standardization applies
- Process the entire table from top to bottom
- Maintain consistent row numbering throughout
no valid result
| Fuzzy Score | F1 micro / macro | Micro precision/recall | Tue/False Positives | |||||
| n/a | 0.56 | 0.57 | 0.60 | 0.52 | 61 | 1317 | 871 | 1201 |
| Micro Precision | Micro Recall | Instances | TP | FP | FN | |||
| Pricing Date: n/a, n/a. | Tokens: 196.0K IT + 265.3K OT = 461.3K TT | Cost: 0.000$ + 0.000$ = 0.000$ |
{'document-type': ['index-card'], 'writing': ['handwritten', 'typed', 'printed'], 'century': [20], 'layout': ['table', 'form'], 'task': ['transcription', 'document-understanding', 'data-correction'], 'language': ['de', 'fr']}
| Provider | genai |
| Model | gemini-2.5-flash-lite-preview-09-2025 |
| Temperature | 0.0 |
| Dataclass | Table |
| Normalized Score | 87.37 % |
| Test time | unknown seconds |
Extract all information from this personnel card table and return it as a structured JSON object. The card contains rows documenting employment history with positions, locations, salary information, dates, and remarks.
REQUIRED JSON STRUCTURE:
```json
{
"rows": [
{
"row_number": 1,
"dienstliche_stellung": {
"diplomatic_transcript": "exact text from card",
"interpretation": "expanded/standardized form or null",
"is_crossed_out": false
},
"dienstort": {
"diplomatic_transcript": "exact text from card",
"interpretation": "expanded/standardized form or null",
"is_crossed_out": false
},
"gehaltsklasse": {
"diplomatic_transcript": "exact text from card",
"interpretation": "expanded/standardized form or null",
"is_crossed_out": false
},
"jahresgehalt_monatsgehalt_taglohn": {
"diplomatic_transcript": "exact text from card",
"interpretation": "standardized numeric form or null",
"is_crossed_out": false
},
"datum_gehaltsänderung": {
"diplomatic_transcript": "exact text from card",
"interpretation": "YYYY-MM-DD format or null",
"is_crossed_out": false
},
"bemerkungen": {
"diplomatic_transcript": "exact text from card",
"interpretation": "expanded/standardized form or null",
"is_crossed_out": false
}
}
]
}
```
COLUMN DEFINITIONS:
1. **dienstliche_stellung**: Official position or job title (e.g., "Assistent", "Professor", "Sekretär")
2. **dienstort**: Place of service or work location (e.g., "Basel", "Zürich")
3. **gehaltsklasse**: Salary class or grade (e.g., "III", "IV", roman numerals or numbers)
4. **jahresgehalt_monatsgehalt_taglohn**: Salary amount (annual/monthly/daily wage)
5. **datum_gehaltsänderung**: Date of salary change or effective date
6. **bemerkungen**: Remarks, notes, or additional comments
FIELD EXTRACTION RULES:
**diplomatic_transcript** (REQUIRED for all fields):
- Transcribe EXACTLY as written on the card
- Include all abbreviations, punctuation, and formatting as they appear
- Preserve original capitalization and spacing
- Include currency symbols and separators (e.g., "Fr. 2'400.-", "3.700.-")
- For dates, copy the exact format (e.g., "1. Jan. 1946", "1.April 1945")
- Use empty string "" for empty cells
- Be sure to escape ditto marks (repetition marks such as `"` indicating "same as above")
- DO NOT expand abbreviations or standardize formats
- Do not transcribe checkmarks
**interpretation** (OPTIONAL - use null if not applicable):
- For ditto marks (repetition marks such as `"`): Replace with the actual repeated value from the previous row in the same column
- For example, if previous row's dienstliche_stellung is "Hilfsleiterin" and current row has `"`, interpret as "Hilfsleiterin"
- Do NOT add explanatory text like "wie oben" or similar - just provide the repeated value
- Never expand abbreviations
- For dates: Convert to ISO format YYYY-MM-DD
- "1. Jan. 1946" → "1946-01-01"
- "1.April 1945" → "1945-04-01"
- For salary amounts: Extract numeric value only (remove currency symbols, separators)
- "Fr. 2'400.-" → "2400"
- "3.700.-" → "3700"
- "5.094.-" → "5094"
"6,30.-" → "6.3"
- For salary class: Convert roman numerals to arabic if clear
- "III" → "3"
- "IV" → "4"
- Do not convert roman numerals to arabic if not salary, date, or salary class
- Use null if no interpretation/expansion is needed or if the field is empty
- "+ {word}" where {word} is a word does not need interpretation
**is_crossed_out** (REQUIRED for all fields):
- Set to true if text in this field is crossed out, struck through, or deleted
- Set to false if text is normal (not crossed out)
- Empty cells should have is_crossed_out: false
ROW HANDLING:
- Number rows sequentially starting from 1 (top to bottom)
- Include ALL rows that have ANY content in ANY column
- Empty rows (all cells empty) should be omitted
- A row with only one filled cell should still be included
IMPORTANT NOTES:
- Return ONLY the JSON object, no additional text or explanation
- Every field must have all three sub-fields: diplomatic_transcript, interpretation, is_crossed_out
- diplomatic_transcript must never be null (use empty string "" for empty cells)
- interpretation can be null when no expansion/standardization applies
- Process the entire table from top to bottom
- Maintain consistent row numbering throughout
no valid result
| Fuzzy Score | F1 micro / macro | Micro precision/recall | Tue/False Positives | |||||
| n/a | 0.87 | 0.83 | 0.83 | 0.92 | 61 | 2327 | 482 | 191 |
| Micro Precision | Micro Recall | Instances | TP | FP | FN | |||
| Pricing Date: n/a, n/a. | Tokens: 90.5K IT + 61.7K OT = 152.2K TT | Cost: 0.009$ + 0.025$ = 0.034$ |
{'document-type': ['index-card'], 'writing': ['handwritten', 'typed', 'printed'], 'century': [20], 'layout': ['table', 'form'], 'task': ['transcription', 'document-understanding', 'data-correction'], 'language': ['de', 'fr']}
| Provider | mistral |
| Model | magistral-small-2509 |
| Temperature | 0.0 |
| Dataclass | Table |
| Normalized Score | 25.26 % |
| Test time | unknown seconds |
Extract all information from this personnel card table and return it as a structured JSON object. The card contains rows documenting employment history with positions, locations, salary information, dates, and remarks.
REQUIRED JSON STRUCTURE:
```json
{
"rows": [
{
"row_number": 1,
"dienstliche_stellung": {
"diplomatic_transcript": "exact text from card",
"interpretation": "expanded/standardized form or null",
"is_crossed_out": false
},
"dienstort": {
"diplomatic_transcript": "exact text from card",
"interpretation": "expanded/standardized form or null",
"is_crossed_out": false
},
"gehaltsklasse": {
"diplomatic_transcript": "exact text from card",
"interpretation": "expanded/standardized form or null",
"is_crossed_out": false
},
"jahresgehalt_monatsgehalt_taglohn": {
"diplomatic_transcript": "exact text from card",
"interpretation": "standardized numeric form or null",
"is_crossed_out": false
},
"datum_gehaltsänderung": {
"diplomatic_transcript": "exact text from card",
"interpretation": "YYYY-MM-DD format or null",
"is_crossed_out": false
},
"bemerkungen": {
"diplomatic_transcript": "exact text from card",
"interpretation": "expanded/standardized form or null",
"is_crossed_out": false
}
}
]
}
```
COLUMN DEFINITIONS:
1. **dienstliche_stellung**: Official position or job title (e.g., "Assistent", "Professor", "Sekretär")
2. **dienstort**: Place of service or work location (e.g., "Basel", "Zürich")
3. **gehaltsklasse**: Salary class or grade (e.g., "III", "IV", roman numerals or numbers)
4. **jahresgehalt_monatsgehalt_taglohn**: Salary amount (annual/monthly/daily wage)
5. **datum_gehaltsänderung**: Date of salary change or effective date
6. **bemerkungen**: Remarks, notes, or additional comments
FIELD EXTRACTION RULES:
**diplomatic_transcript** (REQUIRED for all fields):
- Transcribe EXACTLY as written on the card
- Include all abbreviations, punctuation, and formatting as they appear
- Preserve original capitalization and spacing
- Include currency symbols and separators (e.g., "Fr. 2'400.-", "3.700.-")
- For dates, copy the exact format (e.g., "1. Jan. 1946", "1.April 1945")
- Use empty string "" for empty cells
- Be sure to escape ditto marks (repetition marks such as `"` indicating "same as above")
- DO NOT expand abbreviations or standardize formats
- Do not transcribe checkmarks
**interpretation** (OPTIONAL - use null if not applicable):
- For ditto marks (repetition marks such as `"`): Replace with the actual repeated value from the previous row in the same column
- For example, if previous row's dienstliche_stellung is "Hilfsleiterin" and current row has `"`, interpret as "Hilfsleiterin"
- Do NOT add explanatory text like "wie oben" or similar - just provide the repeated value
- Never expand abbreviations
- For dates: Convert to ISO format YYYY-MM-DD
- "1. Jan. 1946" → "1946-01-01"
- "1.April 1945" → "1945-04-01"
- For salary amounts: Extract numeric value only (remove currency symbols, separators)
- "Fr. 2'400.-" → "2400"
- "3.700.-" → "3700"
- "5.094.-" → "5094"
"6,30.-" → "6.3"
- For salary class: Convert roman numerals to arabic if clear
- "III" → "3"
- "IV" → "4"
- Do not convert roman numerals to arabic if not salary, date, or salary class
- Use null if no interpretation/expansion is needed or if the field is empty
- "+ {word}" where {word} is a word does not need interpretation
**is_crossed_out** (REQUIRED for all fields):
- Set to true if text in this field is crossed out, struck through, or deleted
- Set to false if text is normal (not crossed out)
- Empty cells should have is_crossed_out: false
ROW HANDLING:
- Number rows sequentially starting from 1 (top to bottom)
- Include ALL rows that have ANY content in ANY column
- Empty rows (all cells empty) should be omitted
- A row with only one filled cell should still be included
IMPORTANT NOTES:
- Return ONLY the JSON object, no additional text or explanation
- Every field must have all three sub-fields: diplomatic_transcript, interpretation, is_crossed_out
- diplomatic_transcript must never be null (use empty string "" for empty cells)
- interpretation can be null when no expansion/standardization applies
- Process the entire table from top to bottom
- Maintain consistent row numbering throughout
no valid result
| Fuzzy Score | F1 micro / macro | Micro precision/recall | Tue/False Positives | |||||
| n/a | 0.25 | 0.21 | 0.23 | 0.28 | 61 | 701 | 2331 | 1817 |
| Micro Precision | Micro Recall | Instances | TP | FP | FN | |||
| Pricing Date: n/a, n/a. | Tokens: 110.4K IT + 56.3K OT = 166.7K TT | Cost: 0.055$ + 0.028$ = 0.083$ |
{'document-type': ['index-card'], 'writing': ['handwritten', 'typed', 'printed'], 'century': [20], 'layout': ['table', 'form'], 'task': ['transcription', 'document-understanding', 'data-correction'], 'language': ['de', 'fr']}
| Provider | genai |
| Model | gemini-2.5-flash |
| Temperature | 0.0 |
| Dataclass | Table |
| Normalized Score | 95.41 % |
| Test time | unknown seconds |
Extract all information from this personnel card table and return it as a structured JSON object. The card contains rows documenting employment history with positions, locations, salary information, dates, and remarks.
REQUIRED JSON STRUCTURE:
```json
{
"rows": [
{
"row_number": 1,
"dienstliche_stellung": {
"diplomatic_transcript": "exact text from card",
"interpretation": "expanded/standardized form or null",
"is_crossed_out": false
},
"dienstort": {
"diplomatic_transcript": "exact text from card",
"interpretation": "expanded/standardized form or null",
"is_crossed_out": false
},
"gehaltsklasse": {
"diplomatic_transcript": "exact text from card",
"interpretation": "expanded/standardized form or null",
"is_crossed_out": false
},
"jahresgehalt_monatsgehalt_taglohn": {
"diplomatic_transcript": "exact text from card",
"interpretation": "standardized numeric form or null",
"is_crossed_out": false
},
"datum_gehaltsänderung": {
"diplomatic_transcript": "exact text from card",
"interpretation": "YYYY-MM-DD format or null",
"is_crossed_out": false
},
"bemerkungen": {
"diplomatic_transcript": "exact text from card",
"interpretation": "expanded/standardized form or null",
"is_crossed_out": false
}
}
]
}
```
COLUMN DEFINITIONS:
1. **dienstliche_stellung**: Official position or job title (e.g., "Assistent", "Professor", "Sekretär")
2. **dienstort**: Place of service or work location (e.g., "Basel", "Zürich")
3. **gehaltsklasse**: Salary class or grade (e.g., "III", "IV", roman numerals or numbers)
4. **jahresgehalt_monatsgehalt_taglohn**: Salary amount (annual/monthly/daily wage)
5. **datum_gehaltsänderung**: Date of salary change or effective date
6. **bemerkungen**: Remarks, notes, or additional comments
FIELD EXTRACTION RULES:
**diplomatic_transcript** (REQUIRED for all fields):
- Transcribe EXACTLY as written on the card
- Include all abbreviations, punctuation, and formatting as they appear
- Preserve original capitalization and spacing
- Include currency symbols and separators (e.g., "Fr. 2'400.-", "3.700.-")
- For dates, copy the exact format (e.g., "1. Jan. 1946", "1.April 1945")
- Use empty string "" for empty cells
- Be sure to escape ditto marks (repetition marks such as `"` indicating "same as above")
- DO NOT expand abbreviations or standardize formats
- Do not transcribe checkmarks
**interpretation** (OPTIONAL - use null if not applicable):
- For ditto marks (repetition marks such as `"`): Replace with the actual repeated value from the previous row in the same column
- For example, if previous row's dienstliche_stellung is "Hilfsleiterin" and current row has `"`, interpret as "Hilfsleiterin"
- Do NOT add explanatory text like "wie oben" or similar - just provide the repeated value
- Never expand abbreviations
- For dates: Convert to ISO format YYYY-MM-DD
- "1. Jan. 1946" → "1946-01-01"
- "1.April 1945" → "1945-04-01"
- For salary amounts: Extract numeric value only (remove currency symbols, separators)
- "Fr. 2'400.-" → "2400"
- "3.700.-" → "3700"
- "5.094.-" → "5094"
"6,30.-" → "6.3"
- For salary class: Convert roman numerals to arabic if clear
- "III" → "3"
- "IV" → "4"
- Do not convert roman numerals to arabic if not salary, date, or salary class
- Use null if no interpretation/expansion is needed or if the field is empty
- "+ {word}" where {word} is a word does not need interpretation
**is_crossed_out** (REQUIRED for all fields):
- Set to true if text in this field is crossed out, struck through, or deleted
- Set to false if text is normal (not crossed out)
- Empty cells should have is_crossed_out: false
ROW HANDLING:
- Number rows sequentially starting from 1 (top to bottom)
- Include ALL rows that have ANY content in ANY column
- Empty rows (all cells empty) should be omitted
- A row with only one filled cell should still be included
IMPORTANT NOTES:
- Return ONLY the JSON object, no additional text or explanation
- Every field must have all three sub-fields: diplomatic_transcript, interpretation, is_crossed_out
- diplomatic_transcript must never be null (use empty string "" for empty cells)
- interpretation can be null when no expansion/standardization applies
- Process the entire table from top to bottom
- Maintain consistent row numbering throughout
no valid result
| Fuzzy Score | F1 micro / macro | Micro precision/recall | Tue/False Positives | |||||
| n/a | 0.95 | 0.90 | 0.95 | 0.96 | 61 | 2411 | 125 | 107 |
| Micro Precision | Micro Recall | Instances | TP | FP | FN | |||
| Pricing Date: n/a, n/a. | Tokens: 90.5K IT + 60.1K OT = 150.5K TT | Cost: 0.027$ + 0.150$ = 0.177$ |
{'document-type': ['index-card'], 'writing': ['handwritten', 'typed', 'printed'], 'century': [20], 'layout': ['table', 'form'], 'task': ['transcription', 'document-understanding', 'data-correction'], 'language': ['de', 'fr']}
| Provider | openai |
| Model | qwen/qwen3-vl-30b-a3b-instruct |
| Temperature | 0.0 |
| Dataclass | Table |
| Normalized Score | 92.61 % |
| Test time | unknown seconds |
Extract all information from this personnel card table and return it as a structured JSON object. The card contains rows documenting employment history with positions, locations, salary information, dates, and remarks.
REQUIRED JSON STRUCTURE:
```json
{
"rows": [
{
"row_number": 1,
"dienstliche_stellung": {
"diplomatic_transcript": "exact text from card",
"interpretation": "expanded/standardized form or null",
"is_crossed_out": false
},
"dienstort": {
"diplomatic_transcript": "exact text from card",
"interpretation": "expanded/standardized form or null",
"is_crossed_out": false
},
"gehaltsklasse": {
"diplomatic_transcript": "exact text from card",
"interpretation": "expanded/standardized form or null",
"is_crossed_out": false
},
"jahresgehalt_monatsgehalt_taglohn": {
"diplomatic_transcript": "exact text from card",
"interpretation": "standardized numeric form or null",
"is_crossed_out": false
},
"datum_gehaltsänderung": {
"diplomatic_transcript": "exact text from card",
"interpretation": "YYYY-MM-DD format or null",
"is_crossed_out": false
},
"bemerkungen": {
"diplomatic_transcript": "exact text from card",
"interpretation": "expanded/standardized form or null",
"is_crossed_out": false
}
}
]
}
```
COLUMN DEFINITIONS:
1. **dienstliche_stellung**: Official position or job title (e.g., "Assistent", "Professor", "Sekretär")
2. **dienstort**: Place of service or work location (e.g., "Basel", "Zürich")
3. **gehaltsklasse**: Salary class or grade (e.g., "III", "IV", roman numerals or numbers)
4. **jahresgehalt_monatsgehalt_taglohn**: Salary amount (annual/monthly/daily wage)
5. **datum_gehaltsänderung**: Date of salary change or effective date
6. **bemerkungen**: Remarks, notes, or additional comments
FIELD EXTRACTION RULES:
**diplomatic_transcript** (REQUIRED for all fields):
- Transcribe EXACTLY as written on the card
- Include all abbreviations, punctuation, and formatting as they appear
- Preserve original capitalization and spacing
- Include currency symbols and separators (e.g., "Fr. 2'400.-", "3.700.-")
- For dates, copy the exact format (e.g., "1. Jan. 1946", "1.April 1945")
- Use empty string "" for empty cells
- Be sure to escape ditto marks (repetition marks such as `"` indicating "same as above")
- DO NOT expand abbreviations or standardize formats
- Do not transcribe checkmarks
**interpretation** (OPTIONAL - use null if not applicable):
- For ditto marks (repetition marks such as `"`): Replace with the actual repeated value from the previous row in the same column
- For example, if previous row's dienstliche_stellung is "Hilfsleiterin" and current row has `"`, interpret as "Hilfsleiterin"
- Do NOT add explanatory text like "wie oben" or similar - just provide the repeated value
- Never expand abbreviations
- For dates: Convert to ISO format YYYY-MM-DD
- "1. Jan. 1946" → "1946-01-01"
- "1.April 1945" → "1945-04-01"
- For salary amounts: Extract numeric value only (remove currency symbols, separators)
- "Fr. 2'400.-" → "2400"
- "3.700.-" → "3700"
- "5.094.-" → "5094"
"6,30.-" → "6.3"
- For salary class: Convert roman numerals to arabic if clear
- "III" → "3"
- "IV" → "4"
- Do not convert roman numerals to arabic if not salary, date, or salary class
- Use null if no interpretation/expansion is needed or if the field is empty
- "+ {word}" where {word} is a word does not need interpretation
**is_crossed_out** (REQUIRED for all fields):
- Set to true if text in this field is crossed out, struck through, or deleted
- Set to false if text is normal (not crossed out)
- Empty cells should have is_crossed_out: false
ROW HANDLING:
- Number rows sequentially starting from 1 (top to bottom)
- Include ALL rows that have ANY content in ANY column
- Empty rows (all cells empty) should be omitted
- A row with only one filled cell should still be included
IMPORTANT NOTES:
- Return ONLY the JSON object, no additional text or explanation
- Every field must have all three sub-fields: diplomatic_transcript, interpretation, is_crossed_out
- diplomatic_transcript must never be null (use empty string "" for empty cells)
- interpretation can be null when no expansion/standardization applies
- Process the entire table from top to bottom
- Maintain consistent row numbering throughout
no valid result
| Fuzzy Score | F1 micro / macro | Micro precision/recall | Tue/False Positives | |||||
| n/a | 0.93 | 0.89 | 0.92 | 0.93 | 61 | 2351 | 208 | 167 |
| Micro Precision | Micro Recall | Instances | TP | FP | FN | |||
| Pricing Date: n/a, n/a. | Tokens: 249.5K IT + 47.7K OT = 297.2K TT | Cost: 0.000$ + 0.000$ = 0.000$ |
{'document-type': ['index-card'], 'writing': ['handwritten', 'typed', 'printed'], 'century': [20], 'layout': ['table', 'form'], 'task': ['transcription', 'document-understanding', 'data-correction'], 'language': ['de', 'fr']}
| Provider | openai |
| Model | meta-llama/llama-4-maverick |
| Temperature | 0.0 |
| Dataclass | Table |
| Normalized Score | 88.92 % |
| Test time | unknown seconds |
Extract all information from this personnel card table and return it as a structured JSON object. The card contains rows documenting employment history with positions, locations, salary information, dates, and remarks.
REQUIRED JSON STRUCTURE:
```json
{
"rows": [
{
"row_number": 1,
"dienstliche_stellung": {
"diplomatic_transcript": "exact text from card",
"interpretation": "expanded/standardized form or null",
"is_crossed_out": false
},
"dienstort": {
"diplomatic_transcript": "exact text from card",
"interpretation": "expanded/standardized form or null",
"is_crossed_out": false
},
"gehaltsklasse": {
"diplomatic_transcript": "exact text from card",
"interpretation": "expanded/standardized form or null",
"is_crossed_out": false
},
"jahresgehalt_monatsgehalt_taglohn": {
"diplomatic_transcript": "exact text from card",
"interpretation": "standardized numeric form or null",
"is_crossed_out": false
},
"datum_gehaltsänderung": {
"diplomatic_transcript": "exact text from card",
"interpretation": "YYYY-MM-DD format or null",
"is_crossed_out": false
},
"bemerkungen": {
"diplomatic_transcript": "exact text from card",
"interpretation": "expanded/standardized form or null",
"is_crossed_out": false
}
}
]
}
```
COLUMN DEFINITIONS:
1. **dienstliche_stellung**: Official position or job title (e.g., "Assistent", "Professor", "Sekretär")
2. **dienstort**: Place of service or work location (e.g., "Basel", "Zürich")
3. **gehaltsklasse**: Salary class or grade (e.g., "III", "IV", roman numerals or numbers)
4. **jahresgehalt_monatsgehalt_taglohn**: Salary amount (annual/monthly/daily wage)
5. **datum_gehaltsänderung**: Date of salary change or effective date
6. **bemerkungen**: Remarks, notes, or additional comments
FIELD EXTRACTION RULES:
**diplomatic_transcript** (REQUIRED for all fields):
- Transcribe EXACTLY as written on the card
- Include all abbreviations, punctuation, and formatting as they appear
- Preserve original capitalization and spacing
- Include currency symbols and separators (e.g., "Fr. 2'400.-", "3.700.-")
- For dates, copy the exact format (e.g., "1. Jan. 1946", "1.April 1945")
- Use empty string "" for empty cells
- Be sure to escape ditto marks (repetition marks such as `"` indicating "same as above")
- DO NOT expand abbreviations or standardize formats
- Do not transcribe checkmarks
**interpretation** (OPTIONAL - use null if not applicable):
- For ditto marks (repetition marks such as `"`): Replace with the actual repeated value from the previous row in the same column
- For example, if previous row's dienstliche_stellung is "Hilfsleiterin" and current row has `"`, interpret as "Hilfsleiterin"
- Do NOT add explanatory text like "wie oben" or similar - just provide the repeated value
- Never expand abbreviations
- For dates: Convert to ISO format YYYY-MM-DD
- "1. Jan. 1946" → "1946-01-01"
- "1.April 1945" → "1945-04-01"
- For salary amounts: Extract numeric value only (remove currency symbols, separators)
- "Fr. 2'400.-" → "2400"
- "3.700.-" → "3700"
- "5.094.-" → "5094"
"6,30.-" → "6.3"
- For salary class: Convert roman numerals to arabic if clear
- "III" → "3"
- "IV" → "4"
- Do not convert roman numerals to arabic if not salary, date, or salary class
- Use null if no interpretation/expansion is needed or if the field is empty
- "+ {word}" where {word} is a word does not need interpretation
**is_crossed_out** (REQUIRED for all fields):
- Set to true if text in this field is crossed out, struck through, or deleted
- Set to false if text is normal (not crossed out)
- Empty cells should have is_crossed_out: false
ROW HANDLING:
- Number rows sequentially starting from 1 (top to bottom)
- Include ALL rows that have ANY content in ANY column
- Empty rows (all cells empty) should be omitted
- A row with only one filled cell should still be included
IMPORTANT NOTES:
- Return ONLY the JSON object, no additional text or explanation
- Every field must have all three sub-fields: diplomatic_transcript, interpretation, is_crossed_out
- diplomatic_transcript must never be null (use empty string "" for empty cells)
- interpretation can be null when no expansion/standardization applies
- Process the entire table from top to bottom
- Maintain consistent row numbering throughout
no valid result
| Fuzzy Score | F1 micro / macro | Micro precision/recall | Tue/False Positives | |||||
| n/a | 0.89 | 0.86 | 0.88 | 0.90 | 61 | 2259 | 304 | 259 |
| Micro Precision | Micro Recall | Instances | TP | FP | FN | |||
| Pricing Date: n/a, n/a. | Tokens: 211.3K IT + 50.6K OT = 261.9K TT | Cost: 0.000$ + 0.000$ = 0.010$ |
{'document-type': ['index-card'], 'writing': ['handwritten', 'typed', 'printed'], 'century': [20], 'layout': ['table', 'form'], 'task': ['transcription', 'document-understanding', 'data-correction'], 'language': ['de', 'fr']}
| Provider | openai |
| Model | gpt-5.2-2025-12-11 |
| Temperature | 0.0 |
| Dataclass | Table |
| Normalized Score | 95.35 % |
| Test time | unknown seconds |
Extract all information from this personnel card table and return it as a structured JSON object. The card contains rows documenting employment history with positions, locations, salary information, dates, and remarks.
REQUIRED JSON STRUCTURE:
```json
{
"rows": [
{
"row_number": 1,
"dienstliche_stellung": {
"diplomatic_transcript": "exact text from card",
"interpretation": "expanded/standardized form or null",
"is_crossed_out": false
},
"dienstort": {
"diplomatic_transcript": "exact text from card",
"interpretation": "expanded/standardized form or null",
"is_crossed_out": false
},
"gehaltsklasse": {
"diplomatic_transcript": "exact text from card",
"interpretation": "expanded/standardized form or null",
"is_crossed_out": false
},
"jahresgehalt_monatsgehalt_taglohn": {
"diplomatic_transcript": "exact text from card",
"interpretation": "standardized numeric form or null",
"is_crossed_out": false
},
"datum_gehaltsänderung": {
"diplomatic_transcript": "exact text from card",
"interpretation": "YYYY-MM-DD format or null",
"is_crossed_out": false
},
"bemerkungen": {
"diplomatic_transcript": "exact text from card",
"interpretation": "expanded/standardized form or null",
"is_crossed_out": false
}
}
]
}
```
COLUMN DEFINITIONS:
1. **dienstliche_stellung**: Official position or job title (e.g., "Assistent", "Professor", "Sekretär")
2. **dienstort**: Place of service or work location (e.g., "Basel", "Zürich")
3. **gehaltsklasse**: Salary class or grade (e.g., "III", "IV", roman numerals or numbers)
4. **jahresgehalt_monatsgehalt_taglohn**: Salary amount (annual/monthly/daily wage)
5. **datum_gehaltsänderung**: Date of salary change or effective date
6. **bemerkungen**: Remarks, notes, or additional comments
FIELD EXTRACTION RULES:
**diplomatic_transcript** (REQUIRED for all fields):
- Transcribe EXACTLY as written on the card
- Include all abbreviations, punctuation, and formatting as they appear
- Preserve original capitalization and spacing
- Include currency symbols and separators (e.g., "Fr. 2'400.-", "3.700.-")
- For dates, copy the exact format (e.g., "1. Jan. 1946", "1.April 1945")
- Use empty string "" for empty cells
- Be sure to escape ditto marks (repetition marks such as `"` indicating "same as above")
- DO NOT expand abbreviations or standardize formats
- Do not transcribe checkmarks
**interpretation** (OPTIONAL - use null if not applicable):
- For ditto marks (repetition marks such as `"`): Replace with the actual repeated value from the previous row in the same column
- For example, if previous row's dienstliche_stellung is "Hilfsleiterin" and current row has `"`, interpret as "Hilfsleiterin"
- Do NOT add explanatory text like "wie oben" or similar - just provide the repeated value
- Never expand abbreviations
- For dates: Convert to ISO format YYYY-MM-DD
- "1. Jan. 1946" → "1946-01-01"
- "1.April 1945" → "1945-04-01"
- For salary amounts: Extract numeric value only (remove currency symbols, separators)
- "Fr. 2'400.-" → "2400"
- "3.700.-" → "3700"
- "5.094.-" → "5094"
"6,30.-" → "6.3"
- For salary class: Convert roman numerals to arabic if clear
- "III" → "3"
- "IV" → "4"
- Do not convert roman numerals to arabic if not salary, date, or salary class
- Use null if no interpretation/expansion is needed or if the field is empty
- "+ {word}" where {word} is a word does not need interpretation
**is_crossed_out** (REQUIRED for all fields):
- Set to true if text in this field is crossed out, struck through, or deleted
- Set to false if text is normal (not crossed out)
- Empty cells should have is_crossed_out: false
ROW HANDLING:
- Number rows sequentially starting from 1 (top to bottom)
- Include ALL rows that have ANY content in ANY column
- Empty rows (all cells empty) should be omitted
- A row with only one filled cell should still be included
IMPORTANT NOTES:
- Return ONLY the JSON object, no additional text or explanation
- Every field must have all three sub-fields: diplomatic_transcript, interpretation, is_crossed_out
- diplomatic_transcript must never be null (use empty string "" for empty cells)
- interpretation can be null when no expansion/standardization applies
- Process the entire table from top to bottom
- Maintain consistent row numbering throughout
no valid result
| Fuzzy Score | F1 micro / macro | Micro precision/recall | Tue/False Positives | |||||
| n/a | 0.95 | 0.90 | 0.95 | 0.96 | 61 | 2469 | 127 | 114 |
| Micro Precision | Micro Recall | Instances | TP | FP | FN | |||
| Pricing Date: n/a, n/a. | Tokens: 243.3K IT + 40.0K OT = 283.3K TT | Cost: 0.426$ + 0.560$ = 0.986$ |
{'document-type': ['index-card'], 'writing': ['handwritten', 'typed', 'printed'], 'century': [20], 'layout': ['table', 'form'], 'task': ['transcription', 'document-understanding', 'data-correction'], 'language': ['de', 'fr']}
| Provider | openai |
| Model | qwen/qwen3-vl-8b-instruct |
| Temperature | 0.0 |
| Dataclass | Table |
| Normalized Score | 87.11 % |
| Test time | unknown seconds |
Extract all information from this personnel card table and return it as a structured JSON object. The card contains rows documenting employment history with positions, locations, salary information, dates, and remarks.
REQUIRED JSON STRUCTURE:
```json
{
"rows": [
{
"row_number": 1,
"dienstliche_stellung": {
"diplomatic_transcript": "exact text from card",
"interpretation": "expanded/standardized form or null",
"is_crossed_out": false
},
"dienstort": {
"diplomatic_transcript": "exact text from card",
"interpretation": "expanded/standardized form or null",
"is_crossed_out": false
},
"gehaltsklasse": {
"diplomatic_transcript": "exact text from card",
"interpretation": "expanded/standardized form or null",
"is_crossed_out": false
},
"jahresgehalt_monatsgehalt_taglohn": {
"diplomatic_transcript": "exact text from card",
"interpretation": "standardized numeric form or null",
"is_crossed_out": false
},
"datum_gehaltsänderung": {
"diplomatic_transcript": "exact text from card",
"interpretation": "YYYY-MM-DD format or null",
"is_crossed_out": false
},
"bemerkungen": {
"diplomatic_transcript": "exact text from card",
"interpretation": "expanded/standardized form or null",
"is_crossed_out": false
}
}
]
}
```
COLUMN DEFINITIONS:
1. **dienstliche_stellung**: Official position or job title (e.g., "Assistent", "Professor", "Sekretär")
2. **dienstort**: Place of service or work location (e.g., "Basel", "Zürich")
3. **gehaltsklasse**: Salary class or grade (e.g., "III", "IV", roman numerals or numbers)
4. **jahresgehalt_monatsgehalt_taglohn**: Salary amount (annual/monthly/daily wage)
5. **datum_gehaltsänderung**: Date of salary change or effective date
6. **bemerkungen**: Remarks, notes, or additional comments
FIELD EXTRACTION RULES:
**diplomatic_transcript** (REQUIRED for all fields):
- Transcribe EXACTLY as written on the card
- Include all abbreviations, punctuation, and formatting as they appear
- Preserve original capitalization and spacing
- Include currency symbols and separators (e.g., "Fr. 2'400.-", "3.700.-")
- For dates, copy the exact format (e.g., "1. Jan. 1946", "1.April 1945")
- Use empty string "" for empty cells
- Be sure to escape ditto marks (repetition marks such as `"` indicating "same as above")
- DO NOT expand abbreviations or standardize formats
- Do not transcribe checkmarks
**interpretation** (OPTIONAL - use null if not applicable):
- For ditto marks (repetition marks such as `"`): Replace with the actual repeated value from the previous row in the same column
- For example, if previous row's dienstliche_stellung is "Hilfsleiterin" and current row has `"`, interpret as "Hilfsleiterin"
- Do NOT add explanatory text like "wie oben" or similar - just provide the repeated value
- Never expand abbreviations
- For dates: Convert to ISO format YYYY-MM-DD
- "1. Jan. 1946" → "1946-01-01"
- "1.April 1945" → "1945-04-01"
- For salary amounts: Extract numeric value only (remove currency symbols, separators)
- "Fr. 2'400.-" → "2400"
- "3.700.-" → "3700"
- "5.094.-" → "5094"
"6,30.-" → "6.3"
- For salary class: Convert roman numerals to arabic if clear
- "III" → "3"
- "IV" → "4"
- Do not convert roman numerals to arabic if not salary, date, or salary class
- Use null if no interpretation/expansion is needed or if the field is empty
- "+ {word}" where {word} is a word does not need interpretation
**is_crossed_out** (REQUIRED for all fields):
- Set to true if text in this field is crossed out, struck through, or deleted
- Set to false if text is normal (not crossed out)
- Empty cells should have is_crossed_out: false
ROW HANDLING:
- Number rows sequentially starting from 1 (top to bottom)
- Include ALL rows that have ANY content in ANY column
- Empty rows (all cells empty) should be omitted
- A row with only one filled cell should still be included
IMPORTANT NOTES:
- Return ONLY the JSON object, no additional text or explanation
- Every field must have all three sub-fields: diplomatic_transcript, interpretation, is_crossed_out
- diplomatic_transcript must never be null (use empty string "" for empty cells)
- interpretation can be null when no expansion/standardization applies
- Process the entire table from top to bottom
- Maintain consistent row numbering throughout
no valid result
| Fuzzy Score | F1 micro / macro | Micro precision/recall | Tue/False Positives | |||||
| n/a | 0.87 | 0.83 | 0.87 | 0.87 | 61 | 2203 | 337 | 315 |
| Micro Precision | Micro Recall | Instances | TP | FP | FN | |||
| Pricing Date: n/a, n/a. | Tokens: 299.3K IT + 56.2K OT = 355.5K TT | Cost: 0.000$ + 0.000$ = 0.000$ |
{'document-type': ['index-card'], 'writing': ['handwritten', 'typed', 'printed'], 'century': [20], 'layout': ['table', 'form'], 'task': ['transcription', 'document-understanding', 'data-correction'], 'language': ['de', 'fr']}
| Provider | mistral |
| Model | magistral-medium-2509 |
| Temperature | 0.0 |
| Dataclass | Table |
| Normalized Score | 19.45 % |
| Test time | unknown seconds |
Extract all information from this personnel card table and return it as a structured JSON object. The card contains rows documenting employment history with positions, locations, salary information, dates, and remarks.
REQUIRED JSON STRUCTURE:
```json
{
"rows": [
{
"row_number": 1,
"dienstliche_stellung": {
"diplomatic_transcript": "exact text from card",
"interpretation": "expanded/standardized form or null",
"is_crossed_out": false
},
"dienstort": {
"diplomatic_transcript": "exact text from card",
"interpretation": "expanded/standardized form or null",
"is_crossed_out": false
},
"gehaltsklasse": {
"diplomatic_transcript": "exact text from card",
"interpretation": "expanded/standardized form or null",
"is_crossed_out": false
},
"jahresgehalt_monatsgehalt_taglohn": {
"diplomatic_transcript": "exact text from card",
"interpretation": "standardized numeric form or null",
"is_crossed_out": false
},
"datum_gehaltsänderung": {
"diplomatic_transcript": "exact text from card",
"interpretation": "YYYY-MM-DD format or null",
"is_crossed_out": false
},
"bemerkungen": {
"diplomatic_transcript": "exact text from card",
"interpretation": "expanded/standardized form or null",
"is_crossed_out": false
}
}
]
}
```
COLUMN DEFINITIONS:
1. **dienstliche_stellung**: Official position or job title (e.g., "Assistent", "Professor", "Sekretär")
2. **dienstort**: Place of service or work location (e.g., "Basel", "Zürich")
3. **gehaltsklasse**: Salary class or grade (e.g., "III", "IV", roman numerals or numbers)
4. **jahresgehalt_monatsgehalt_taglohn**: Salary amount (annual/monthly/daily wage)
5. **datum_gehaltsänderung**: Date of salary change or effective date
6. **bemerkungen**: Remarks, notes, or additional comments
FIELD EXTRACTION RULES:
**diplomatic_transcript** (REQUIRED for all fields):
- Transcribe EXACTLY as written on the card
- Include all abbreviations, punctuation, and formatting as they appear
- Preserve original capitalization and spacing
- Include currency symbols and separators (e.g., "Fr. 2'400.-", "3.700.-")
- For dates, copy the exact format (e.g., "1. Jan. 1946", "1.April 1945")
- Use empty string "" for empty cells
- Be sure to escape ditto marks (repetition marks such as `"` indicating "same as above")
- DO NOT expand abbreviations or standardize formats
- Do not transcribe checkmarks
**interpretation** (OPTIONAL - use null if not applicable):
- For ditto marks (repetition marks such as `"`): Replace with the actual repeated value from the previous row in the same column
- For example, if previous row's dienstliche_stellung is "Hilfsleiterin" and current row has `"`, interpret as "Hilfsleiterin"
- Do NOT add explanatory text like "wie oben" or similar - just provide the repeated value
- Never expand abbreviations
- For dates: Convert to ISO format YYYY-MM-DD
- "1. Jan. 1946" → "1946-01-01"
- "1.April 1945" → "1945-04-01"
- For salary amounts: Extract numeric value only (remove currency symbols, separators)
- "Fr. 2'400.-" → "2400"
- "3.700.-" → "3700"
- "5.094.-" → "5094"
"6,30.-" → "6.3"
- For salary class: Convert roman numerals to arabic if clear
- "III" → "3"
- "IV" → "4"
- Do not convert roman numerals to arabic if not salary, date, or salary class
- Use null if no interpretation/expansion is needed or if the field is empty
- "+ {word}" where {word} is a word does not need interpretation
**is_crossed_out** (REQUIRED for all fields):
- Set to true if text in this field is crossed out, struck through, or deleted
- Set to false if text is normal (not crossed out)
- Empty cells should have is_crossed_out: false
ROW HANDLING:
- Number rows sequentially starting from 1 (top to bottom)
- Include ALL rows that have ANY content in ANY column
- Empty rows (all cells empty) should be omitted
- A row with only one filled cell should still be included
IMPORTANT NOTES:
- Return ONLY the JSON object, no additional text or explanation
- Every field must have all three sub-fields: diplomatic_transcript, interpretation, is_crossed_out
- diplomatic_transcript must never be null (use empty string "" for empty cells)
- interpretation can be null when no expansion/standardization applies
- Process the entire table from top to bottom
- Maintain consistent row numbering throughout
no valid result
| Fuzzy Score | F1 micro / macro | Micro precision/recall | Tue/False Positives | |||||
| n/a | 0.19 | 0.18 | 0.22 | 0.17 | 61 | 433 | 1501 | 2085 |
| Micro Precision | Micro Recall | Instances | TP | FP | FN | |||
| Pricing Date: n/a, n/a. | Tokens: 110.4K IT + 41.9K OT = 152.3K TT | Cost: 0.221$ + 0.209$ = 0.430$ |