Digitizing workflows and troubleshooting

← Curve Digitizer: digitize curves from old datasheets

10. Complete workflows: 6BX7-GT and 2D21

6BX7-GT workflow: Ia = f(Va) for several Vg values

1. Open the image

Use File → Open image… and select the graph raster.

2. Configure axes

X name: Plate Voltage
X unit: V
X min: 0
X max: 500
X scale: linear

Y name: Plate Current
Y unit: mA
Y min: 0
Y max: 70
Y scale: linear

Press Apply axis settings.

3. Calibrate

Capture the data-area corners in BL, BR, TL, TR order. Zoom in when intersections are unclear.

4. Verify

Choose one or more known grid intersections, enter their expected values and inspect ΔX and ΔY.

5. Create the first series

Series name: Vg_-20V
Parameter name: Vg
Parameter value: -20
Parameter unit: V

6. Digitize

Select Add points and place samples along the characteristic. Include curvature changes and regions important for the later fit.

7. Correct

Switch to Edit / move points, inspect markers and move or delete mistakes.

8. Add other grid-voltage series

Create one series per grid voltage, keeping Parameter name = Vg and Parameter unit = V.

9. Save

Save the JSON before fitting. The project retains raw pixel information and can be recalibrated later.

10. Export

X name: Va
X unit: V
Y name: Ia
Y unit: mA
Series parameter name: Vg
Series parameter unit: V

2D21 workflow: control or triggering-threshold curves

Curve Digitizer contains no 2D21-specific logic. Use the same process while naming axes and parameter exactly according to the particular datasheet graph.

Before digitizing a control-curve family, identify:

  • the physical quantity on X;
  • the physical quantity on Y;
  • the variable distinguishing the curves;
  • the units printed in the datasheet;
  • whether either axis is logarithmic.

Create one series per parameter value. For threshold curves, place points particularly carefully in steep regions and around rapid transitions.

General rule

The application deliberately does not interpret the electronic meaning of a graph. Names, units and series parameter are user-defined. This keeps the digitizer generic enough for vacuum tubes, transistors, diodes, discharge devices, sensors and many other components.

11. Troubleshooting, shortcuts and limitations

The GUI does not start

Check Tkinter:

python3 -c "import tkinter; print(tkinter.TkVersion)"

Then check Pillow and NumPy:

python3 -c "import PIL, numpy; print(PIL.__version__, numpy.__version__)"

The image does not open

The file chooser is configured for PNG, JPG/JPEG and TIF/TIFF. A corrupt or unsupported file is rejected by Pillow and an error message is shown.

Calibration is rejected

  • all four points must be distinct and correctly selected;
  • axis Min and Max must be finite numeric values and different from each other;
  • logarithmic-axis limits must both be greater than zero;
  • the four calibration points must not form a degenerate configuration.

Calibrated values look wrong

  • check BL, BR, TL, TR order;
  • make sure you clicked the data rectangle, not page corners;
  • check units, Min/Max and linear/log scale;
  • use Verify calibration on known points away from the corners;
  • repeat calibration if a corner click was uncertain.

Snap moves points onto the grid

Reduce the radius or disable snap. The algorithm searches for darkness only; it cannot distinguish a curve from a grid line, axis or text.

A point cannot be selected

Confirm that the correct series is active and Edit / move points mode is selected. Zoom in when several markers are very close.

A hidden series appears in CSV

This is expected in the current version. Show / Hide controls Canvas visibility only; export includes all series.

The project cannot find its image

The application tries the stored relative path and then the absolute path. If neither works, it asks you to locate the image manually. Select the same source image used during digitization.

Keyboard and mouse reference

Command Shortcut
Open image Ctrl+O
Open project Ctrl+Shift+O
Save project Ctrl+S
Save project as Ctrl+Shift+S
Export CSV Ctrl+E
Undo Ctrl+Z
Redo Ctrl+Y
Delete selected point Delete
Fit image to window F
Zoom mouse wheel
Pan middle- or right-button drag

Intentional limitations

  • no OCR;
  • no automatic curve tracing;
  • no interpolation;
  • no automatic unit conversion;
  • no built-in fitting;
  • no modification of the original image;
  • one global homography per graph.

Program files

  • curve_digitizer.py: GUI and application workflow;
  • digitizer_model.py: data model, axes, homography and JSON;
  • image_canvas.py: image display, zoom, pan and Canvas/image coordinates;
  • requirements.txt: Pillow and NumPy.

License

The source is marked GPL-3.0-or-later: GNU General Public License version 3 or, at your option, any later version.