private boolean shouldBeRemoved( BxLine line, Population heightPopulation, Population fontPopulation, Population distancePopulation, Population indentationPopulation) { if (line.getMostPopularFontName() == null) { return true; } if (heightPopulation.getZScore(line.getHeight()) < candMinHeightZScore) { return true; } if (looksLikeEquation(line)) { return true; } if (looksLikeFigure(line)) { return true; } if (looksLikeTable(line)) { return true; } if (!containsMostlyLetters(line)) { return true; } if (!containsWord(line)) { return true; } if (startsWithLargeNumber(line)) { return true; } if (heightPopulation.getZScore(line.getHeight()) < outlHeightZScore && Math.abs(fontPopulation.getZScore(getFontIndex(line))) < outlFontZScore && (!line.hasPrev() || distancePopulation.getZScore(line.getY() - line.getPrev().getY()) < outlDistanceZScore) && Math.abs(indentationPopulation.getZScore(line.getX())) < outlIndentZScore) { return true; } int i = 0; BxLine actLine = line; while (actLine.hasNext()) { actLine = actLine.getNext(); if (actLine.toText().matches("[A-Z].*")) { break; } if (i++ == maxHeaderLineCount) { return true; } } return false; }