internal void Handle()

in src-csharp/ArgHandlers/ReadingOrderHandler.cs [13:47]


		internal void Handle(string bucketName, string twoColumnImage) {
			var task = textractTextService.StartDocumentTextDetection(bucketName, twoColumnImage);
			var jobId = task.Result;
			textractTextService.WaitForJobCompletion(jobId);
			var jobResults = textractTextService.GetJobResults(jobId);
			var lines = new List<IndexedText>();
			var columns = new List<Column>();
			jobResults.ForEach(job => {
				job.Blocks.ForEach(block => {
					if(block.BlockType == "LINE") {
						var columnFound = false;
						for(var index = 0; index < columns.Count; index++) {
							var column = columns[index];
							var bb = block.Geometry.BoundingBox;
							var bbLeft = bb.Left;
							var bbRight = bb.Left + bb.Width;
							var bbCentre = bb.Left + (bb.Width / 2);
							var columnCentre = column.Left + (column.Right / 2);

							if((bbCentre > column.Left && bbCentre < column.Right) || (columnCentre > bbLeft && columnCentre < bbRight)) {
								lines.Add(new IndexedText { ColumnIndex = index, Text = block.Text });
								columnFound = true;
								break;
							}
						}
						if(!columnFound) {
							var bb = block.Geometry.BoundingBox;
							columns.Add(new Column { Left = bb.Left, Right = bb.Left + bb.Width });
							lines.Add(new IndexedText { ColumnIndex = columns.Count - 1, Text = block.Text });
						}
					}
				});
				lines.FindAll(line => line.ColumnIndex == 0).ForEach(line => Console.WriteLine(line));
			});
		}