Chart Data Extractor Skill

Extract pixel-level data from an image of a chart or graph and produce a structured data table.

Chart Data Extractor Skill — The Skill Playground: pick the Executive Update skill, fill in a few notes, hit run, and watch a structured executive… (from the mohitagw15856/pm-claude-skills README)

From the mohitagw15856/pm-claude-skills README — shows the whole collection, not only this skill. · view on GitHub

How to use it

Claude Code
  1. Run the line below. It pulls the whole folder into ~/.claude/skills/chart-data-extractor.
  2. Describe your job in plain words. Claude Code follows the skill from there.
Claude Code — installs the whole folder, not just SKILL.md
npx degit mohitagw15856/pm-claude-skills/skills/chart-data-extractor#main ~/.claude/skills/chart-data-extractor

For one project only, change the path to .claude/skills/chart-data-extractor.

Claude (web or desktop app)
  1. On this page open ⋯ → Download .md.
  2. Save it as SKILL.md in a folder, zip the folder, then Customize → Skills → + → Create skill → Upload a skill.
  3. Pick the file and Save. Claude shows the name and description and runs a security scan.
  4. Check the skill is switched on.
  5. Start a new chat and describe your job in plain words. The AI follows the skill from there.
ChatGPT or another app
  1. ChatGPT: make a Project and paste it into Instructions.
  2. Neither? Paste it at the top of a new chat — it works for that chat.
Not working?
  • Check which app you pasted it into — the steps above name the right one.
  • Some skills need the paid tier of Claude or ChatGPT.
Step-by-step guide with screenshots · Ask in the forum

Paste into Claude, ChatGPT or Cursor.

Source of Chart Data Extractor Skill

Show the full text102 lines
namedescription
chart-data-extractorExtract pixel-level data from an image of a chart or graph and produce a structured data table. Use when asked to extract data from a chart image, transcribe numbers from a graph, digitise a chart, or turn a screenshot of data into a table. Produces a structured table with extracted values, confidence levels, and a reconstructed chart source. Best used with Claude Opus 4.7 or newer for reliable chart data extraction.

Chart Data Extractor Skill

Extracts data from images of charts and graphs — bar charts, line charts, pie charts, scatter plots, and tables in images — producing a structured data table that can be used in spreadsheets or rebuilt in any charting tool. Built to leverage Opus 4.7 pixel-level image analysis capabilities.

Required Inputs

Ask the user for these if not provided:

  • The chart image (upload a screenshot or image file)
  • Chart type (if ambiguous — bar / line / pie / scatter / other)
  • What matters most (approximate trends / precise values / specific data points / categorisation)
  • Known axis values (optional — if the user knows the max/min values to anchor the extraction)

Output Structure

1. Chart Identification
Attribute Value
Chart type [Bar / Line / Pie / Scatter / Area / Other]
Chart title (if visible) [Title text]
X-axis label [Label + unit]
Y-axis label [Label + unit]
Number of series N
Legend categories [List]
Data period (if time-based) [Start — End]
2. Extracted Data Table
[X axis] [Series 1] [Series 2] ...
[Value] [Value] [Value]
3. Confidence Levels

For each data point or series, flag confidence:

  • High confidence: data points where the value is clearly readable against gridlines or labels
  • Medium confidence: data points where the value is interpolated between gridlines
  • Low confidence: data points where the value is ambiguous or overlaps with other elements

Low-confidence points should be explicitly listed — not silently included in the main table.

4. Notable Observations

Observations that the data itself reveals:

  • Peak value: [Value, when, in which series]
  • Lowest value: [Value, when, in which series]
  • Largest delta between series: [Details]
  • Any anomalies or outliers visible in the chart
5. Reconstructed Source

CSV format for direct use:

[x_axis],[series_1],[series_2]
[value],[value],[value]
6. Assumptions and Caveats
  • Grid resolution: [How precisely values could be read — e.g. "Y-axis has major gridlines every 10 units, minor every 2"]
  • Interpolation used: [Any values that required estimating between gridlines]
  • Unclear data: [Anything in the chart that could not be read reliably]
  • Axis scale: [Linear/logarithmic/etc — note if not obvious]
7. Follow-up Options

Ask the user which of these they want:

  • Rebuild the chart in a specified format (Excel formula, Python matplotlib, D3, etc.)
  • Produce a narrative description of what the chart shows
  • Compare this data against another chart or source
  • Flag potentially misleading visual choices in the original (truncated axes, misleading scales, etc.)

Quality Checks

  • Every extracted number specifies which series it belongs to
  • Confidence levels are explicit for ambiguous points
  • Low-confidence values are flagged separately, not silently included
  • Assumptions about axis scale and interpolation are stated
  • CSV output is clean and directly usable

Anti-Patterns

  • Do not silently include low-confidence data points in the main table — flag them separately so the user knows which values to verify
  • Do not assume a linear scale without confirming it — logarithmic axes make extracted values incorrect by orders of magnitude if misread
  • Do not report extracted values with false precision — if the chart's Y-axis only shows gridlines every 10 units, a reported value of 37 is invented, not extracted
  • Do not omit the assumptions and caveats section — partial image quality, overlapping bars, or unlabelled axes must be disclosed

Example Trigger Phrases

  • "Extract the data from this chart"
  • "Transcribe the numbers in this graph"
  • "Turn this chart image into a spreadsheet"
  • "Digitise this chart so I can rebuild it"
  • "What are the exact values in this bar chart?"

Why This Works Better on Opus 4.7

Earlier models struggled with pixel-level data transcription from charts, often hallucinating values or misreading gridline positions. Opus 4.7 uses a higher image resolution (2576px vs 1568px) with coordinates mapping 1:1 to pixels, making chart data extraction reliable for practical use.

1---
2name: chart-data-extractor
3description: "Extract pixel-level data from an image of a chart or graph and produce a structured data table. Use when asked to extract data from a chart image, transcribe numbers from a graph, digitise a chart, or turn a screenshot of data into a table. Produces a structured table with extracted values, confidence levels, and a reconstructed chart source. Best used with Claude Opus 4.7 or newer for reliable chart data extraction."
4---
5 
6# Chart Data Extractor Skill
7 
8Extracts data from images of charts and graphs — bar charts, line charts, pie charts, scatter plots, and tables in images — producing a structured data table that can be used in spreadsheets or rebuilt in any charting tool. Built to leverage Opus 4.7 pixel-level image analysis capabilities.
9 
10## Required Inputs
11 
12Ask the user for these if not provided:
13- **The chart image** (upload a screenshot or image file)
14- **Chart type** (if ambiguous — bar / line / pie / scatter / other)
15- **What matters most** (approximate trends / precise values / specific data points / categorisation)
16- **Known axis values** (optional — if the user knows the max/min values to anchor the extraction)
17 
18## Output Structure
19 
20### 1. Chart Identification
21 
22| Attribute | Value |
23|---|---|
24| Chart type | [Bar / Line / Pie / Scatter / Area / Other] |
25| Chart title (if visible) | [Title text] |
26| X-axis label | [Label + unit] |
27| Y-axis label | [Label + unit] |
28| Number of series | N |
29| Legend categories | [List] |
30| Data period (if time-based) | [Start — End] |
31 
32### 2. Extracted Data Table
33 
34| [X axis] | [Series 1] | [Series 2] | ... |
35|---|---|---|---|
36| [Value] | [Value] | [Value] | |
37 
38### 3. Confidence Levels
39 
40For each data point or series, flag confidence:
41 
42- **High confidence:** data points where the value is clearly readable against gridlines or labels
43- **Medium confidence:** data points where the value is interpolated between gridlines
44- **Low confidence:** data points where the value is ambiguous or overlaps with other elements
45 
46Low-confidence points should be explicitly listed — not silently included in the main table.
47 
48### 4. Notable Observations
49 
50Observations that the data itself reveals:
51- Peak value: [Value, when, in which series]
52- Lowest value: [Value, when, in which series]
53- Largest delta between series: [Details]
54- Any anomalies or outliers visible in the chart
55 
56### 5. Reconstructed Source
57 
58CSV format for direct use:
59 
60```csv
61[x_axis],[series_1],[series_2]
62[value],[value],[value]
63```
64 
65### 6. Assumptions and Caveats
66 
67- Grid resolution: [How precisely values could be read — e.g. "Y-axis has major gridlines every 10 units, minor every 2"]
68- Interpolation used: [Any values that required estimating between gridlines]
69- Unclear data: [Anything in the chart that could not be read reliably]
70- Axis scale: [Linear/logarithmic/etc — note if not obvious]
71 
72### 7. Follow-up Options
73 
74Ask the user which of these they want:
75- Rebuild the chart in a specified format (Excel formula, Python matplotlib, D3, etc.)
76- Produce a narrative description of what the chart shows
77- Compare this data against another chart or source
78- Flag potentially misleading visual choices in the original (truncated axes, misleading scales, etc.)
79 
80## Quality Checks
81- [ ] Every extracted number specifies which series it belongs to
82- [ ] Confidence levels are explicit for ambiguous points
83- [ ] Low-confidence values are flagged separately, not silently included
84- [ ] Assumptions about axis scale and interpolation are stated
85- [ ] CSV output is clean and directly usable
86 
87## Anti-Patterns
88 
89- [ ] Do not silently include low-confidence data points in the main table — flag them separately so the user knows which values to verify
90- [ ] Do not assume a linear scale without confirming it — logarithmic axes make extracted values incorrect by orders of magnitude if misread
91- [ ] Do not report extracted values with false precision — if the chart's Y-axis only shows gridlines every 10 units, a reported value of 37 is invented, not extracted
92- [ ] Do not omit the assumptions and caveats section — partial image quality, overlapping bars, or unlabelled axes must be disclosed
93 
94## Example Trigger Phrases
95- "Extract the data from this chart"
96- "Transcribe the numbers in this graph"
97- "Turn this chart image into a spreadsheet"
98- "Digitise this chart so I can rebuild it"
99- "What are the exact values in this bar chart?"
100 
101## Why This Works Better on Opus 4.7
102Earlier models struggled with pixel-level data transcription from charts, often hallucinating values or misreading gridline positions. Opus 4.7 uses a higher image resolution (2576px vs 1568px) with coordinates mapping 1:1 to pixels, making chart data extraction reliable for practical use.

Discussion