How to Use the POH Performance Digitizer

Table of contents


Overview

The Graph Digitizer is a web-based tool for extracting performance data from PDF images of aircraft flight manuals and other technical documents. It supports three primary workflows:

The digitizer runs entirely in the browser with no server-side processing required.

Key Capabilities


Getting Started

Running the Digitizer

The digitizer can be found at https://pohperformance.com/developer/digitizer/.

System Requirements


User interface

The digitizer user interface is organized into four vertical panels. From left to right:

Project setup

Selecting images to digitize

Digitizing a Graph

Digitizing a graph has five major steps:

Selecting an image and setting graph boundaries

Setting the graph X and Y axis values

Grid Calibration

Grid calibration adjusts the grid points to align with the grid displayed in the graph image. Many older POH documents and maps have been printed and scanned multiple times, adding skew and other non-linearities with each pass. Without calibration, the digitizer cannot convert mouse clicks into accurate performance data. Once calibrated, the digitizer uses each sample's image coordinates to determine the distances to the nearest grid points and, from those, calculates the sample's graph-axis values.

NOTE: Accurately aligning the displayed grid with the image grid is key to accurate sampling.

Each grid point is adjustable by clicking it, then dragging it or using the arrow keys. Once adjusted, the point becomes anchored and cannot be moved by other adjustments. These anchors are highlighted by a yellow ring. If you subsequently want to remove the anchoring, select the point and press the Delete key. The corner points are always treated as anchors, and their positions are initially set by the axis points. However, you may move them as desired to align them accurately with the grid.

The position of points on the same horizontal or vertical grid line between two anchors is linearly tied to their surrounding anchors, unless you explicitly move them to make them anchors. They are considered secondary anchors and will behave as anchors when grid points to either side of the secondary grid line are moved. The order of anchor creation counts, so moving an anchor will not affect the position of grid points tied to previously created anchors. All non-anchored (primary or secondary) grid points surrounding a moving anchor will adjust linearly with the anchor's position. The movement stops when it hits any previously defined primary and any associated secondary anchors.

Grid calibration technique

Because the order of anchor creation matters, the following technique is suggested:

In some cases, you may want to delete previously defined anchors by selecting and pressing the delete key. You can reset all the anchors by pressing Init Grid again.

When you are finished, the grid points should lie directly over each grid intersection, and the lines between them should bisect the image grid lines. Click Hide next to the Init Grid button to hide the grid. Sampling is disabled while the grid is displayed.

Setting up inputs and the output

Each graphed curve is series. If a graph has only one curve, then there is only one series, one input, and one output. The input may be either the X or Y axis, and the output would be the opposite axis value. By default, the X axis is the input and the Y axis is the output. Clicking Use Y as input reverses that.

When the series has more than one curve, set the number of inputs to two. The first input is the parameter value, the second input is the X or Y axis value. When sampling a curve, you'll have to set the parameter value manually in the value panel.

Input and output names

The input and output names are used as Ptable keys. The keys are used to extract particular input values and set output values in the object that is passed to Ptable.interpolate(). The keys and their units can be app-specific, but here's a list of keys used by most POH Performance apps and their typical default units:

Input and output units

If input values are in units different from the default, you may set a different unit string so the Ptable performs the conversion automatically. For example, if a graphed input or output airspeed is in mph when the app's default is kt, simply set the input units to mph to set up the conversion.

Input error handling

A Ptable has several ways to handle input range errors. You can adjust then with the input limit selector. Possible values are:

Sampling

Once the input(s) and output are set up, you may begin sampling the first curve by clicking Start Digitizing. You may then set samples along the curve by clicking. Sample values will appear in the current row in the value panel. You may add samples out of order, since the digitizer assumes curves are well-behaved and each input value corresponds to a unique output value. Samples are automatically sorted in input value order. You may change the sort direction in the value panel. Lines will appear between points to help you judge interpolation error. Each curve will have a unique color, so you can distinguish them.

Editing samples

You can edit sample values at any time by clicking and then dragging or moving the sample with the arrow keys. It may be convenient to click Stop Digitizing before selecting a sample, so you don't inadvertently create a new sample. You may also directly edit or delete values in the value panel (see below).

2-input graphs

On 2-input graphs, you will have to manually set the first input value for the curve by editing the value field in the value panel. When a series is complete, click New Series in the value panel to create sample value rows for a new curve. Enter the new value for the first input manually.

Splines

Ptable objects can project a spline between samples. The type of spline used ensures that the curve has a continuous first derivative and does not fall outside the rectangle defined by the two points. This restricts the use of splines to well-behaved curves without severe changes in slope. Fortunately, most curves seen in a POH are well-behaved. Clicking Use spline interpolation will cause the lines between samples in each series to be splined using the Ptable algorithm. It will also specify spline interpolation in the final Ptable output.

Verifying samples

When you are done sampling a series, look at the captured values in the value panel. Samples on grid lines should have the grid line value. You can click a sample row in the value panel to highlight the sample and adjust it, if required. If the sample appears in the correct position, but the value is off, then check that the grid is properly aligned near the sample by clicking the Show button in the Grid Calibration card. Click Hide when done to show the samples again.

You can readjust the grid at any time. The existing samples will retain their physical position on the image; however, the sample values in the value panel will be adjusted to match any changes in the grid.

The last card in the graph panel lets you add verification constraints on the output value of each sample. Samples that violate the constraints will be highlighted in red in the value panel. There are two types of constraints: value and slope. The value constraint lets you verify that the output value increases or decreases monotonically as the input value increases. Similarly, the slope constraint lets you verify that the slope between each pair of samples increases or decreases monotonically as the input value increases. This lets you verify that concave or convex curves remain concave or convex in the sample output.

Sampling technique

POH graphs are designed to be read by humans, who have a limited ability to interpolate and extract values as offset from a grid. This limits their absolute accuracy. The goal is to do as well or better than a human could. Here are some hints:

Over-sampling adds noise to the data. Imagine sampling a straight line with 10 samples instead of two. The slope between each pair of samples can't be constant due to the constraints of accuracy and rounding. Similarly, if you over-sample, gently curving lines, you will probably cause unwanted slope verification failures. Lastly, over-sampling makes it harder to manually verify the output values.

Tandem graphs

Many POH graphs are arranged in tandem on the same set of grid lines. The output of one graph flows into the next either horizontally or vertically. A typical example is a takeoff graph with a first graph that computes ground roll at the given temperature and altitude, whose output flows into the second graph that adjusts the ground roll for weight, followed by a third graph that adjusts the ground roll for head or tailwind.

In many cases, the user is expected to use the output of the first graph to interpolate between two adjustment lines in the next graph. In this case, the parameter value in each series in the adjustment graph is the input value of the first sample. In graphs that are to the right of the previous graph, that's the leftmost sample. In this case, clicking Use leftmost Y value as parameter in the Input and Output Configuration card will automatically synchronize the series parameter with the leftmost sample in each series.

In graphs that are beneath the previous graph, the Y value of the uppermost sample forms the series parameter value. In this case, click Use Y as input first, then click Use uppermost X value as parameter in the Input and Output Configuration card, which will automatically synchronize the series parameter with the uppermost sample in each series.

Always check that the start of the adjustment lines (the leftmost or uppermost samples) covers all valid output values from the previous graph. If they do not, use offset in the error handling for the adjustment input. That will allow the interpolation to parallel the outermost line when the input value exceeds the adjustment range instead of producing an error.


Digitizing a Table

Digitizing a table has four major steps:

The digitizer uses any OCR text embedded in the PDF. If no text is supplied, the digitizer has a built-in OCR engine. The OCR is adequate for many scanned text images, but in some cases it may be useful to prepare the PDF using more professional OCR engines like Adobe Acrobat Pro.

Selecting an image and setting graph boundaries

Setting up table inputs and the output

See Setting up inputs and the output above. However, tables often have 2 or more inputs.

Setting up the table data region, rows, and columns (optional)

If the data you're extracting is not organized into a formal table with data grouped in columns or rows, you can simply drag individual numbers or strings to value panel cells. However, if the data is organized into a table, you can outline groups of columnar data so that they can be dragged as a group into rows of cells in the value panel. To do that:

When finished, the cell boundaries in the data region should surround groups of columnar data that can be dragged as a group into sequential output cells in the value panel.

Extracting the data

If you've set up data regions, you can drag groups of output data directly to the output column in the value panel. You'll be able to see the values you're dragging in the drag image. Once dropped on an output cell, the grouped data will create the necessary rows and populate the output values. Similarly, you can drop the values associated with the final input to the rightmost input column to populate those. You'll have to populate the series parameter with the individual series values by dragging them from the image.


Exporting the data to a Ptable

When you're done digitizing a table or graph, you can export the data by clicking View Ptable in the value panel. This will display a pop-up page with a JavaScript object suitable for passing to a Ptable constructor. The object can be copied by clicking Copy to Clipboard and then pasted into a JavaScript file as appropriate.

Saving the project

Click Save Project in the project panel to download the project file. It will normally be placed in your browser downloads directory. The file encapsulates the PDF and the sampled graphs and tables. The file name is derived from the project name.

The project file can hold all the digitized graphs and tables associated PDF. It can be saved with each aircraft app and used to verify how the data in each POH was captured.

Importing samples from a Ptable

You may verify the samples in an existing Ptable that was digitized using other digitizers by importing them. In the case of a graph, you must first initialize and calibrate the grid in order for this to make sense. After that, click Import Ptable, which will display a pop-up with a text input area where you can paste the text of a Ptable constructor object. Clicking Done will complete the import. For graphs, the series and sample line will appear on the grid according to their value.

Troubleshooting

Problem Solution
PDF won't load Reduce PDF size by extracting relevant pages; check that the file is valid PDF
OCR text is garbled Improve scan quality; OCR the document using better tools like Adobe Acrobat Pro; crop the image to just the table; try manual entry instead
Exported Ptable won't import Check Ptable object structure structure; verify all required fields (title, inputs, output, a); validate syntax
Inaccurate sample points Check grid alignment and adjust grid points; reinitialize the grid and realign
App freezes on large PDF PDFs >50MB may be slow; try cropping to individual pages; use a faster device