Skip to content

Commit c823063

Browse files
committed
Make sure we don't cross more than max text lines
Sometimes when text is arranged into lines it can get messed up and have chunks on more lines than we actually recognize as lines. Make sure that we don't get array out of bounds exceptions.
1 parent 0763a7b commit c823063

1 file changed

Lines changed: 6 additions & 6 deletions

File tree

src/main/java/technology/tabula/detectors/NurminenDetectionAlgorithm.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -535,7 +535,7 @@ private TextEdges getTextEdges(List<Line> lines) {
535535
TextChunk last = edgeChunks.get(edgeChunks.size() - 1);
536536

537537
TextEdge edge = new TextEdge(key, first.getTop(), key, last.getBottom());
538-
edge.intersectingTextRowCount = edgeChunks.size();
538+
edge.intersectingTextRowCount = Math.min(edgeChunks.size(), lines.size());
539539

540540
leftTextEdges.add(edge);
541541
}
@@ -553,7 +553,7 @@ private TextEdges getTextEdges(List<Line> lines) {
553553
TextChunk last = edgeChunks.get(edgeChunks.size() - 1);
554554

555555
TextEdge edge = new TextEdge(key, first.getTop(), key, last.getBottom());
556-
edge.intersectingTextRowCount = edgeChunks.size();
556+
edge.intersectingTextRowCount = Math.min(edgeChunks.size(), lines.size());
557557

558558
midTextEdges.add(edge);
559559
}
@@ -571,7 +571,7 @@ private TextEdges getTextEdges(List<Line> lines) {
571571
TextChunk last = edgeChunks.get(edgeChunks.size() - 1);
572572

573573
TextEdge edge = new TextEdge(key, first.getTop(), key, last.getBottom());
574-
edge.intersectingTextRowCount = edgeChunks.size();
574+
edge.intersectingTextRowCount = Math.min(edgeChunks.size(), lines.size());
575575

576576
rightTextEdges.add(edge);
577577
}
@@ -588,7 +588,7 @@ private TextEdges getTextEdges(List<Line> lines) {
588588
TextChunk last = edgeChunks.get(edgeChunks.size() - 1);
589589

590590
TextEdge edge = new TextEdge(key, first.getTop(), key, last.getBottom());
591-
edge.intersectingTextRowCount = edgeChunks.size();
591+
edge.intersectingTextRowCount = Math.min(edgeChunks.size(), lines.size());
592592

593593
leftTextEdges.add(edge);
594594
}
@@ -601,7 +601,7 @@ private TextEdges getTextEdges(List<Line> lines) {
601601
TextChunk last = edgeChunks.get(edgeChunks.size() - 1);
602602

603603
TextEdge edge = new TextEdge(key, first.getTop(), key, last.getBottom());
604-
edge.intersectingTextRowCount = edgeChunks.size();
604+
edge.intersectingTextRowCount = Math.min(edgeChunks.size(), lines.size());
605605

606606
midTextEdges.add(edge);
607607
}
@@ -614,7 +614,7 @@ private TextEdges getTextEdges(List<Line> lines) {
614614
TextChunk last = edgeChunks.get(edgeChunks.size() - 1);
615615

616616
TextEdge edge = new TextEdge(key, first.getTop(), key, last.getBottom());
617-
edge.intersectingTextRowCount = edgeChunks.size();
617+
edge.intersectingTextRowCount = Math.min(edgeChunks.size(), lines.size());
618618

619619
rightTextEdges.add(edge);
620620
}

0 commit comments

Comments
 (0)