Chart Data Extractor Skill
Extract pixel-level data from an image of a chart or graph and produce a structured data table.
How to use it
Claude Code
- Run the line below. It pulls the whole folder into
~/.claude/skills/chart-data-extractor. - Describe your job in plain words. Claude Code follows the skill from there.
npx degit mohitagw15856/pm-claude-skills/skills/chart-data-extractor#main ~/.claude/skills/chart-data-extractorFor one project only, change the path to .claude/skills/chart-data-extractor.
Claude (web or desktop app)
- On this page open ⋯ → Download .md.
- Save it as SKILL.md in a folder, zip the folder, then Customize → Skills → + → Create skill → Upload a skill.
- Pick the file and Save. Claude shows the name and description and runs a security scan.
- Check the skill is switched on.
- Start a new chat and describe your job in plain words. The AI follows the skill from there.
ChatGPT or another app
- ChatGPT: make a Project and paste it into Instructions.
- 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.
Paste into Claude, ChatGPT or Cursor.
Source of Chart Data Extractor Skill
Show the full text102 lines
| name | description |
|---|---|
| chart-data-extractor | 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. |
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 | |
| 2 | name chart-data-extractor |
| 3 | description "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 | |
| 8 | 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. |
| 9 | |
| 10 | ## Required Inputs |
| 11 | |
| 12 | Ask 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 | |
| 40 | For 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 | |
| 46 | Low-confidence points should be explicitly listed — not silently included in the main table. |
| 47 | |
| 48 | ### 4. Notable Observations |
| 49 | |
| 50 | Observations 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 | |
| 58 | CSV format for direct use: |
| 59 | |
| 60 | |
| 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 | |
| 74 | Ask 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 |
| 102 | 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. |
Discussion
Browse more free Claude skills.


