Skip to content

Commit 97a1c1d

Browse files
committed
rework file operations
1 parent 4a7fff8 commit 97a1c1d

14 files changed

Lines changed: 48 additions & 45 deletions

File tree

example/AutoInvoiceSplitterExtractionExample.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@
22
import com.mindee.input.LocalInputSource;
33
import com.mindee.extraction.ExtractedPDF;
44
import com.mindee.extraction.PDFExtractor;
5-
import com.mindee.parsing.common.AsyncPredictResponse;
6-
import com.mindee.product.invoice.InvoiceV4;
7-
import com.mindee.product.invoicesplitter.InvoiceSplitterV1;
5+
import com.mindee.v1.parsing.common.AsyncPredictResponse;
6+
import com.mindee.v1.product.invoice.InvoiceV4;
7+
import com.mindee.v1.product.invoicesplitter.InvoiceSplitterV1;
88

99
import java.io.File;
1010
import java.io.IOException;

example/AutoMultiReceiptExtractionExample.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,11 @@
22
import com.mindee.input.LocalInputSource;
33
import com.mindee.extraction.ExtractedImage;
44
import com.mindee.extraction.ImageExtractor;
5-
import com.mindee.parsing.common.PredictResponse;
6-
import com.mindee.parsing.common.Page;
7-
import com.mindee.product.multireceiptsdetector.MultiReceiptsDetectorV1;
8-
import com.mindee.product.multireceiptsdetector.MultiReceiptsDetectorV1Document;
9-
import com.mindee.product.receipt.ReceiptV5;
5+
import com.mindee.v1.parsing.common.PredictResponse;
6+
import com.mindee.v1.parsing.common.Page;
7+
import com.mindee.v1.product.multireceiptsdetector.MultiReceiptsDetectorV1;
8+
import com.mindee.v1.product.multireceiptsdetector.MultiReceiptsDetectorV1Document;
9+
import com.mindee.v1.product.receipt.ReceiptV5;
1010

1111
import java.io.File;
1212
import java.io.IOException;
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package com.mindee.geometry;
2+
3+
/**
4+
* A field with position data.
5+
*/
6+
public interface PositionDataField {
7+
Polygon getPolygon();
8+
}

src/main/java/com/mindee/extraction/ExtractedImage.java renamed to src/main/java/com/mindee/image/ExtractedImage.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.mindee.extraction;
1+
package com.mindee.image;
22

33
import com.mindee.input.LocalInputSource;
44
import java.awt.image.BufferedImage;
@@ -21,7 +21,7 @@ public class ExtractedImage {
2121

2222
/**
2323
* Default constructor.
24-
*
24+
*
2525
* @param image Buffered image object.
2626
* @param filename Name of the extracted image.
2727
* @param saveFormat Format to save the image as, defaults to PNG.
@@ -35,7 +35,7 @@ public ExtractedImage(BufferedImage image, String filename, String saveFormat) {
3535
/**
3636
* Write the image to a file.
3737
* Uses the default image format and filename.
38-
*
38+
*
3939
* @param outputPath the output directory (must exist).
4040
* @throws IOException Throws if the file can't be accessed.
4141
*/
@@ -48,7 +48,7 @@ public void writeToFile(String outputPath) throws IOException {
4848
/**
4949
* Write the image to a file.
5050
* Uses the default image format and filename.
51-
*
51+
*
5252
* @param outputPath the output directory (must exist).
5353
* @throws IOException Throws if the file can't be accessed.
5454
*/
@@ -60,7 +60,7 @@ public void writeToFile(Path outputPath) throws IOException {
6060

6161
/**
6262
* Return the image in a format suitable for sending to MindeeClient for parsing.
63-
*
63+
*
6464
* @return an instance of {@link LocalInputSource}
6565
* @throws IOException Throws if the file can't be accessed.
6666
*/

src/main/java/com/mindee/extraction/ImageExtractor.java renamed to src/main/java/com/mindee/image/ImageExtractor.java

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,12 @@
1-
package com.mindee.extraction;
1+
package com.mindee.image;
22

33
import com.mindee.geometry.Bbox;
4-
import com.mindee.geometry.BboxUtils;
54
import com.mindee.geometry.Polygon;
5+
import com.mindee.geometry.PositionDataField;
66
import com.mindee.input.InputSourceUtils;
77
import com.mindee.input.LocalInputSource;
88
import com.mindee.pdf.PDFUtils;
99
import com.mindee.pdf.PdfPageImage;
10-
import com.mindee.v1.parsing.standard.PositionData;
1110
import java.awt.image.BufferedImage;
1211
import java.io.ByteArrayInputStream;
1312
import java.io.IOException;
@@ -75,7 +74,7 @@ public int getPageCount() {
7574
* @param pageIndex The page index to extract, begins at 0.
7675
* @return A list of {@link ExtractedImage}.
7776
*/
78-
public <FieldT extends PositionData> List<ExtractedImage> extractImagesFromPage(
77+
public <FieldT extends PositionDataField> List<ExtractedImage> extractImagesFromPage(
7978
List<FieldT> fields,
8079
int pageIndex
8180
) {
@@ -91,7 +90,7 @@ public <FieldT extends PositionData> List<ExtractedImage> extractImagesFromPage(
9190
* @param outputName The base output filename, must have an image extension.
9291
* @return A list of {@link ExtractedImage}.
9392
*/
94-
public <FieldT extends PositionData> List<ExtractedImage> extractImagesFromPage(
93+
public <FieldT extends PositionDataField> List<ExtractedImage> extractImagesFromPage(
9594
List<FieldT> fields,
9695
int pageIndex,
9796
String outputName
@@ -106,7 +105,7 @@ public <FieldT extends PositionData> List<ExtractedImage> extractImagesFromPage(
106105
return extractFromPage(fields, pageIndex, filename);
107106
}
108107

109-
private <FieldT extends PositionData> List<ExtractedImage> extractFromPage(
108+
private <FieldT extends PositionDataField> List<ExtractedImage> extractFromPage(
110109
List<FieldT> fields,
111110
int pageIndex,
112111
String outputName
@@ -137,24 +136,27 @@ private <FieldT extends PositionData> List<ExtractedImage> extractFromPage(
137136
* @return The {@link ExtractedImage}, or <code>null</code> if the field does not have valid
138137
* position data.
139138
*/
140-
public <FieldT extends PositionData> ExtractedImage extractImage(
139+
public <FieldT extends PositionDataField> ExtractedImage extractImage(
141140
FieldT field,
142141
int pageIndex,
143142
int index,
144143
String filename
145144
) {
146145
String[] splitName = InputSourceUtils.splitNameStrict(filename);
147146
String saveFormat = splitName[1].toLowerCase();
148-
Polygon boundingBox = field.getBoundingBox();
149-
if (boundingBox == null) {
147+
Polygon polygon = field.getPolygon();
148+
if (polygon == null) {
150149
return null;
151150
}
152-
Bbox bbox = BboxUtils.generate(boundingBox);
153151
String fieldFilename = splitName[0]
154152
+ String.format("_%3s", index).replace(" ", "0")
155153
+ "."
156154
+ saveFormat;
157-
return new ExtractedImage(extractImage(bbox, pageIndex), fieldFilename, saveFormat);
155+
return new ExtractedImage(
156+
extractImage(polygon.getAsBbox(), pageIndex),
157+
fieldFilename,
158+
saveFormat
159+
);
158160
}
159161

160162
/**
@@ -167,7 +169,7 @@ public <FieldT extends PositionData> ExtractedImage extractImage(
167169
* @return The {@link ExtractedImage}, or <code>null</code> if the field does not have valid
168170
* position data.
169171
*/
170-
public <FieldT extends PositionData> ExtractedImage extractImage(
172+
public <FieldT extends PositionDataField> ExtractedImage extractImage(
171173
FieldT field,
172174
int pageIndex,
173175
int index

src/main/java/com/mindee/extraction/ExtractedPDF.java renamed to src/main/java/com/mindee/pdf/ExtractedPDF.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.mindee.extraction;
1+
package com.mindee.pdf;
22

33
import com.mindee.input.LocalInputSource;
44
import java.io.ByteArrayOutputStream;

src/main/java/com/mindee/extraction/PDFExtractor.java renamed to src/main/java/com/mindee/pdf/PDFExtractor.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.mindee.extraction;
1+
package com.mindee.pdf;
22

33
import static com.mindee.pdf.PDFUtils.mergePdfPages;
44

src/main/java/com/mindee/v1/parsing/standard/BaseField.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import com.mindee.geometry.BoundingBoxUtils;
88
import com.mindee.geometry.Polygon;
99
import com.mindee.geometry.PolygonDeserializer;
10+
import com.mindee.geometry.PositionDataField;
1011
import lombok.EqualsAndHashCode;
1112
import lombok.Getter;
1213

@@ -16,7 +17,7 @@
1617
@Getter
1718
@EqualsAndHashCode
1819
@JsonIgnoreProperties(ignoreUnknown = true)
19-
public abstract class BaseField implements PositionData {
20+
public abstract class BaseField implements PositionDataField {
2021

2122
/**
2223
* The bounding box equivalent of the polygon.

src/main/java/com/mindee/v1/parsing/standard/PositionData.java

Lines changed: 0 additions & 12 deletions
This file was deleted.

src/main/java/com/mindee/v1/parsing/standard/PositionField.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,15 @@
55
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
66
import com.mindee.geometry.Polygon;
77
import com.mindee.geometry.PolygonDeserializer;
8+
import com.mindee.geometry.PositionDataField;
89
import lombok.Getter;
910

1011
/**
1112
* A detected element in the image.
1213
*/
1314
@Getter
1415
@JsonIgnoreProperties(ignoreUnknown = true)
15-
public class PositionField implements PositionData {
16+
public class PositionField implements PositionDataField {
1617

1718
/**
1819
* Straight rectangle.

0 commit comments

Comments
 (0)