Evaluates LLM-based web information extraction by measuring structural validity (JSON parseability, schema compliance), key extraction accuracy (precision, recall, F1), and value extraction quality (type-aware exact match, BLEU) on real-world HTML-to-JSON tasks. Use when the user wants to benchmark on ScrapeGraphAI-100k, or asks about evaluating this task. Reports Key F1.
Scanned 9/11/2026
Install to Claude Code
npx -y skills add qhjqhj00/research-skills-pool --skill scrapegraphai-100k-eval --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Scrapegraphai 100k Eval?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/qhjqhj00-scrapegraphai-100k-eval)More formats (shields.io, HTML) on the badges page.
---
name: scrapegraphai-100k-eval
description: Evaluates LLM-based web information extraction by measuring structural validity (JSON parseability, schema compliance), key extraction accuracy (precision, recall, F1), and value extraction quality (type-aware exact match, BLEU) on real-world HTML-to-JSON tasks. Use when the user wants to benchmark on ScrapeGraphAI-100k, or asks about evaluating this task. Reports Key F1.
metadata:
skill_kind: dataset_eval
source_arxiv: 2602.15189
bibtex_key: brach2026scrapegraphai100k
confidence: high
---
# scrapegraphai-100k-eval
> ScrapeGraphAI-100k: A Large-Scale Dataset for LLM-Based Web Information Extraction — Brach et al. (2026) (arXiv:2602.15189, 2026)
## What this evaluates
Evaluates LLM-based web information extraction by measuring structural validity (JSON parseability, schema compliance), key extraction accuracy (precision, recall, F1), and value extraction quality (type-aware exact match, BLEU) on real-world HTML-to-JSON tasks.
## Datasets
- **ScrapeGraphAI-100k** — total 93695; splits: test (2714); HF `scrapegraphai/scrapegraph-100k-finetuning`; repo https://github.com/ScrapeGraphAI/scrapegraph-100k-paper
## Metrics
- `is_valid_json` — range: [0, 1]
- Boolean metric indicating whether the model output can be successfully parsed as valid JSON.
- `is_schema_compliant` — range: [0, 1]
- Boolean metric checking if the parsed JSON output conforms to the target schema structure.
- `Key precision` — range: [0, 1]
- Precision of flattened JSON keys using dot-notation paths with [*] wildcards for arrays.
- `Key recall` — range: [0, 1]
- Recall of flattened JSON keys using dot-notation paths with [*] wildcards for arrays.
- `Key F1` **(primary)** — range: [0, 1]
- Harmonic mean of key precision and recall, measuring structural accuracy of extracted keys.
- `Missing keys` — range: other
- Average number of gold keys absent from the model output per sample.
- `Extra keys` — range: other
- Average number of hallucinated keys present in the model output but absent from gold per sample.
- `Value score` — range: [0, 1]
- Type-aware metric averaging exact match for booleans/numbers, set equality for arrays, and sentence-level BLEU for strings.
- `Overall BLEU` — range: [0, 1]
- Sentence-level BLEU score computed on the serialized JSON string of the model output.
## Input / output format
**Input**: Raw HTML content (DOM structure) and a natural-language prompt specifying the extraction target, along with a JSON schema defining the desired output structure.
**Output**: A JSON object conforming to the target schema, containing extracted keys and values from the HTML.
## Scoring recipe
```python
def evaluate(pred_str, gold_str, schema):
pred = json.loads(pred_str) if is_valid_json(pred_str) else None
gold = json.loads(gold_str)
valid = pred is not None
schema_ok = check_schema(pred, schema) if valid else False
p_keys = flatten_keys(pred)
g_keys = flatten_keys(gold)
tp = len(p_keys & g_keys)
prec = tp / len(p_keys) if p_keys else 0
rec = tp / len(g_keys) if g_keys else 0
f1 = 2 * prec * rec / (prec + rec) if (prec + rec) else 0
missing = len(g_keys - p_keys)
extra = len(p_keys - g_keys)
val_scores = [type_aware_match(pred[k], gold[k]) for k in g_keys if k in p_keys]
value_score = mean(val_scores) if val_scores else 0
overall_bleu = sentence_bleu(tokenize(pred_str), tokenize(gold_str))
return valid, schema_ok, prec, rec, f1, missing, extra, value_score, overall_bleu
```
## Common pitfalls
- Models may produce structurally valid JSON that perfectly matches the schema but contains hallucinated or imprecise values, creating a structural-semantic gap.
- Key matching uses dot-notation with [*] wildcards for arrays; failing to account for array wildcards will artificially deflate precision/recall.
- Evaluation excludes samples exceeding the 8192-token context limit, so results may not generalize to very long documents.
## Evidence (verbatim from paper)
> Structural validity metrics assess whether outputs are well-formed: is_valid_json checks JSON parseability, while is_schema_compliant verifies conformance to the target schema. Key extraction metrics (precision, recall, F1) measure structural accuracy by comparing flattened JSON keys using dot-notation paths with [*] wildcards for arrays. Value extraction is captured by value_score, a type-aware metric averaging exact match for booleans/numbers, set equality for arrays, and sentence-level BLEU*(Papineni et al., [2002])* for strings. Finally, overall_bleu on serialized JSON provides a holistic quality measure.
## Citation
```bibtex
@misc{brach2026scrapegraphai100k,
title={ScrapeGraphAI-100k: A Large-Scale Dataset for LLM-Based Web Information Extraction},
author={Brach et al. (2026)},
year={2026},
note={arXiv:2602.15189}
}
```
- arXiv: 2602.15189
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!