/PdfPigMLNetBlockClassifier

Proof of concept of training a simple Region Classifier using PdfPig and ML.NET (LightGBM). The objective is to classify each text block in a pdf document page as either title, text, list, table and image.

Primary LanguageC#

PdfPig ML.Net Block Classifier v2

Proof of concept of training a simple Region Classifier using PdfPig and ML.NET. The objective is to classify each text block in a pdf document page as either title, text, list, table and image.

AutoML model builder was used. The model was trained on a subset of the PubLayNet dataset. See their license here.

Generation MicroAccuracy MacroAccuracy
v1 0.937 0.748
v2 0.952 0.801

For v1 model results, see here.

Results

Results are based on PubLayNet's validation dataset, where the page segmentation is known. For real life use, a page segmenter will be needed (see PdfPig's PageSegmenters). The quality of the page segmentation will impact the results.

Metrics for multi-class classification model

MicroAccuracy = 0.9523, a value between 0 and 1, the closer to 1, the better
MacroAccuracy = 0.8009, a value between 0 and 1, the closer to 1, the better
LogLoss = 3.5333, the closer to 0, the better

LogLoss for class 0 (title)         = 4.6289, the closer to 0, the better
LogLoss for class 1 (image)         = 1.849, the closer to 0, the better
LogLoss for class 2 (text)          = 2.5834, the closer to 0, the better
LogLoss for class 3 (list)          = 28.8412, the closer to 0, the better
LogLoss for class 4 (table)         = 2.8326, the closer to 0, the better

F1 Score for class 0 (title)       = 0.9305, a value between 0 and 1, the closer to 1, the better
F1 Score for class 1 (image)       = 0.9412, a value between 0 and 1, the closer to 1, the better
F1 Score for class 2 (text)        = 0.9691, a value between 0 and 1, the closer to 1, the better
F1 Score for class 3 (list)        = 0.2963, a value between 0 and 1, the closer to 1, the better
F1 Score for class 4 (table)       = 0.9611, a value between 0 and 1, the closer to 1, the better

Confusion table

          ||=======================================================
PREDICTED ||     0 |     1 |     2 |     3 |     4 | Total | Recall
TRUTH     ||=======================================================
(title) 0 || 1,848 |     0 |    89 |     1 |     0 | 1,938 | 0.9536
(image) 1 ||     0 |    72 |     3 |     0 |     1 | 76    | 0.9474
(text)  2 ||   185 |     1 | 8,837 |    16 |     9 | 9,048 | 0.9767
(list)  3 ||     1 |     0 |   225 |    52 |     2 | 280   | 0.1857
(table) 4 ||     0 |     4 |    35 |     2 |   654 | 695   | 0.9410
          ||=======================================================
Precision ||0.9086 |0.9351 |0.9617 |0.7324 |0.9820 |

Permutation Feature Importance

PFI works by taking a labeled dataset, choosing a feature, and permuting the values for that feature across all the examples, so that each example now has a random value for the feature and the original values for all other features. The evaluation metric (e.g. micro-accuracy) is then calculated for this modified dataset, and the change in the evaluation metric from the original dataset is computed. The larger the change in the evaluation metric, the more important the feature is to the model. PFI works by performing this permutation analysis across all the features of a model, one after another. - Source

Micro Accuracy

Feature Description Change in MicroAccuracy 95% Confidence in the Mean Change in MicroAccuracy
wordsCount Words count -0.1144 0.0008237
charsCount Characters count -0.09849 0.0009115
linesCount Lines count -0.04255 0.0005726
blockAspectRatio Ratio between the block's width and height -0.04159 0.0005134
bestNormEditDistance Minimum edit distance between bookmark title and block text -0.04016 0.0006307
deltaToHeight Average delta to average page glyph height -0.03689 0.0003823
pctNumericChars % of numeric characters -0.03375 0.0005174
pctSymbolicChars % of symbolic characters -0.01035 0.000358
pctAlphabeticalChars % of alphabetical characters -0.00859 0.0003075
pctBulletChars % of bullet characters -0.004071 0.0002063
pathsCount Paths count -0.003661 0.0001184
pctHorPaths % of horizontal paths -0.003431 0.0001309
imageAvgProportion Average area covered by images -0.001684 4.68E-05
pctVertPaths % of vertical paths -0.001448 8.139E-05
pctOblPaths % of oblique paths -0.0001883 1.734E-05
imagesCount Images count -9.692E-05 1.127E-05
pctBezierPaths % of Bezier curve paths 6.212E-22 1.352E-05

Macro Accuracy

Feature Description Change in MacroAccuracy 95% Confidence in the Mean Change in MacroAccuracy
charsCount Characters count -0.1339 0.002263
linesCount Lines count -0.08378 0.0009925
deltaToHeight Average delta to average page glyph height -0.06461 0.001223
blockAspectRatio Ratio between the block's width and height -0.05896 0.001163
bestNormEditDistance Minimum edit distance between bookmark title and block text -0.05039 0.001419
pctNumericChars % of numeric characters -0.0475 0.001258
pathsCount Paths count -0.0252 0.000614
wordsCount Words count -0.01651 0.001655
pctSymbolicChars % of symbolic characters -0.01166 0.001505
pctHorPaths % of horizontal paths -0.00984 0.0003186
pctVertPaths % of vertical paths -0.008558 0.0002925
pctAlphabeticalChars % of alphabetical characters -0.006882 0.0009913
imageAvgProportion Average area covered by images -0.006148 0.0001146
pctBulletChars % of bullet characters -0.005319 0.0008375
pctOblPaths % of oblique paths -0.002747 6.657E-05
imagesCount Images count -0.00268 3.903E-05
pctBezierPaths % of Bezier curve paths -4.078E-05 5.263E-05

TO DO

Features

  • Add a decoration score/flag
  • Add block's area ratio: the ratio between block area and the page area, cf.
  • Add block's font style: an enumerated type, with possible values: regular, bold, italic, underline, cf.
  • Add % sparse lines in a block, for better table recognition cf.
  • Font color distance from most common color