This is an automated email from the ASF dual-hosted git repository.
tallison pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/tika.git
The following commit(s) were added to refs/heads/main by this push:
new a53af594a TIKA-4287 -- enable serialization by wrapping the PDFBox
ImageType object (#1866)
a53af594a is described below
commit a53af594a7f6e7ab256dee91e1a39f1d0d8dedfc
Author: Tim Allison <[email protected]>
AuthorDate: Tue Jul 30 11:09:05 2024 -0400
TIKA-4287 -- enable serialization by wrapping the PDFBox ImageType object
(#1866)
---
.../apache/tika/parser/pdf/AbstractPDF2XHTML.java | 2 +-
.../java/org/apache/tika/parser/pdf/PDFParser.java | 2 +-
.../apache/tika/parser/pdf/PDFParserConfig.java | 79 ++++++----------------
.../tika/renderer/pdf/pdfbox/PDFBoxRenderer.java | 2 +-
.../org/apache/tika/parser/pdf/PDFParserTest.java | 3 +-
5 files changed, 23 insertions(+), 65 deletions(-)
diff --git
a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-pdf-module/src/main/java/org/apache/tika/parser/pdf/AbstractPDF2XHTML.java
b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-pdf-module/src/main/java/org/apache/tika/parser/pdf/AbstractPDF2XHTML.java
index 4d0a08226..4bc31c3d9 100644
---
a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-pdf-module/src/main/java/org/apache/tika/parser/pdf/AbstractPDF2XHTML.java
+++
b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-pdf-module/src/main/java/org/apache/tika/parser/pdf/AbstractPDF2XHTML.java
@@ -673,7 +673,7 @@ class AbstractPDF2XHTML extends PDFTextStripper {
try {
BufferedImage image =
- renderer.renderImageWithDPI(pageIndex, dpi,
config.getOcrImageType());
+ renderer.renderImageWithDPI(pageIndex, dpi,
config.getOcrImageType().getImageType());
//TODO -- get suffix based on OcrImageType
tmpFile = tmpResources.createTempFile();
diff --git
a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-pdf-module/src/main/java/org/apache/tika/parser/pdf/PDFParser.java
b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-pdf-module/src/main/java/org/apache/tika/parser/pdf/PDFParser.java
index f21b65d4e..bfd54d4ef 100644
---
a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-pdf-module/src/main/java/org/apache/tika/parser/pdf/PDFParser.java
+++
b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-pdf-module/src/main/java/org/apache/tika/parser/pdf/PDFParser.java
@@ -1099,7 +1099,7 @@ public class PDFParser implements Parser,
RenderingParser, Initializable {
//set a default renderer if nothing was defined
PDFBoxRenderer pdfBoxRenderer = new PDFBoxRenderer();
pdfBoxRenderer.setDPI(config.getOcrDPI());
- pdfBoxRenderer.setImageType(config.getOcrImageType());
+ pdfBoxRenderer.setImageType(config.getOcrImageType().getImageType());
pdfBoxRenderer.setImageFormatName(config.getOcrImageFormatName());
config.setRenderer(pdfBoxRenderer);
}
diff --git
a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-pdf-module/src/main/java/org/apache/tika/parser/pdf/PDFParserConfig.java
b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-pdf-module/src/main/java/org/apache/tika/parser/pdf/PDFParserConfig.java
index 0ee4b274b..991707911 100644
---
a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-pdf-module/src/main/java/org/apache/tika/parser/pdf/PDFParserConfig.java
+++
b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-pdf-module/src/main/java/org/apache/tika/parser/pdf/PDFParserConfig.java
@@ -21,7 +21,6 @@ import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
import java.util.HashSet;
import java.util.Locale;
-import java.util.Objects;
import java.util.Set;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -45,6 +44,18 @@ import org.apache.tika.renderer.Renderer;
*/
public class PDFParserConfig implements Serializable {
+ public enum TikaImageType {
+ RGB(ImageType.RGB),
+ GRAY(ImageType.GRAY);
+
+ private ImageType imageType;
+ TikaImageType(ImageType imageType) {
+ this.imageType = imageType;
+ }
+ public ImageType getImageType() {
+ return imageType;
+ }
+ }
private static final long serialVersionUID = 6492570218190936986L;
private final Set<String> userConfigured = new HashSet<>();
@@ -114,7 +125,7 @@ public class PDFParserConfig implements Serializable {
private OCR_RENDERING_STRATEGY ocrRenderingStrategy =
OCR_RENDERING_STRATEGY.ALL;
private int ocrDPI = 300;
- private ImageType ocrImageType = ImageType.GRAY;
+ private TikaImageType ocrImageType = TikaImageType.GRAY;
private String ocrImageFormatName = "png";
private float ocrImageQuality = 1.0f;
@@ -623,9 +634,9 @@ public class PDFParserConfig implements Serializable {
* Image type used to render the page image for OCR.
*
* @return image type
- * @see #setOcrImageType(ImageType)
+ * @see #setOcrImageType(TikaImageType)
*/
- public ImageType getOcrImageType() {
+ public TikaImageType getOcrImageType() {
return ocrImageType;
}
@@ -634,7 +645,7 @@ public class PDFParserConfig implements Serializable {
*
* @param ocrImageType
*/
- public void setOcrImageType(ImageType ocrImageType) {
+ public void setOcrImageType(TikaImageType ocrImageType) {
this.ocrImageType = ocrImageType;
userConfigured.add("ocrImageType");
}
@@ -642,7 +653,7 @@ public class PDFParserConfig implements Serializable {
/**
* Image type used to render the page image for OCR.
*
- * @see #setOcrImageType(ImageType)
+ * @see #setOcrImageType(TikaImageType)
*/
public void setOcrImageType(String ocrImageTypeString) {
setOcrImageType(parseImageType(ocrImageTypeString));
@@ -749,8 +760,8 @@ public class PDFParserConfig implements Serializable {
userConfigured.add("setKCMS");
}
- private ImageType parseImageType(String ocrImageType) {
- for (ImageType t : ImageType.values()) {
+ private TikaImageType parseImageType(String ocrImageType) {
+ for (TikaImageType t : TikaImageType.values()) {
if (ocrImageType.equalsIgnoreCase(t.toString())) {
return t;
}
@@ -806,58 +817,6 @@ public class PDFParserConfig implements Serializable {
return updated;
}
- @Override
- public boolean equals(Object o) {
- if (this == o) {
- return true;
- }
- if (o == null || getClass() != o.getClass()) {
- return false;
- }
- PDFParserConfig config = (PDFParserConfig) o;
- return enableAutoSpace == config.enableAutoSpace &&
- suppressDuplicateOverlappingText ==
config.suppressDuplicateOverlappingText &&
- extractAnnotationText == config.extractAnnotationText &&
- sortByPosition == config.sortByPosition &&
- extractAcroFormContent == config.extractAcroFormContent &&
- extractBookmarksText == config.extractBookmarksText &&
- extractInlineImages == config.extractInlineImages &&
- extractInlineImageMetadataOnly ==
config.extractInlineImageMetadataOnly &&
- extractUniqueInlineImagesOnly ==
config.extractUniqueInlineImagesOnly &&
- extractMarkedContent == config.extractMarkedContent &&
- Float.compare(config.dropThreshold, dropThreshold) == 0 &&
- ifXFAExtractOnlyXFA == config.ifXFAExtractOnlyXFA && ocrDPI ==
config.ocrDPI &&
- Float.compare(config.ocrImageQuality, ocrImageQuality) == 0 &&
- catchIntermediateIOExceptions ==
config.catchIntermediateIOExceptions &&
- extractActions == config.extractActions &&
- extractFontNames == config.extractFontNames &&
- maxMainMemoryBytes == config.maxMainMemoryBytes && setKCMS ==
config.setKCMS &&
- detectAngles == config.detectAngles &&
- Objects.equals(userConfigured, config.userConfigured) &&
- Objects.equals(averageCharTolerance,
config.averageCharTolerance) &&
- Objects.equals(spacingTolerance, config.spacingTolerance) &&
- ocrStrategy == config.ocrStrategy &&
- Objects.equals(ocrStrategyAuto, config.ocrStrategyAuto) &&
- ocrRenderingStrategy == config.ocrRenderingStrategy &&
- ocrImageType == config.ocrImageType &&
- Objects.equals(ocrImageFormatName, config.ocrImageFormatName)
&&
- imageStrategy == config.imageStrategy &&
- Objects.equals(accessChecker, config.accessChecker) &&
- Objects.equals(renderer, config.renderer);
- }
-
- @Override
- public int hashCode() {
- return Objects.hash(userConfigured, enableAutoSpace,
suppressDuplicateOverlappingText,
- extractAnnotationText, sortByPosition, extractAcroFormContent,
extractBookmarksText,
- extractInlineImages, extractInlineImageMetadataOnly,
extractUniqueInlineImagesOnly,
- extractMarkedContent, averageCharTolerance, spacingTolerance,
dropThreshold,
- ifXFAExtractOnlyXFA, ocrStrategy, ocrStrategyAuto,
ocrRenderingStrategy, ocrDPI,
- ocrImageType, ocrImageFormatName, ocrImageQuality,
imageStrategy, accessChecker,
- catchIntermediateIOExceptions, extractActions,
extractFontNames, maxMainMemoryBytes,
- setKCMS, detectAngles, renderer);
- }
-
public void setRenderer(Renderer renderer) {
this.renderer = renderer;
userConfigured.add("renderer");
diff --git
a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-pdf-module/src/main/java/org/apache/tika/renderer/pdf/pdfbox/PDFBoxRenderer.java
b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-pdf-module/src/main/java/org/apache/tika/renderer/pdf/pdfbox/PDFBoxRenderer.java
index b3ce7d9d7..72392bc2d 100644
---
a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-pdf-module/src/main/java/org/apache/tika/renderer/pdf/pdfbox/PDFBoxRenderer.java
+++
b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-pdf-module/src/main/java/org/apache/tika/renderer/pdf/pdfbox/PDFBoxRenderer.java
@@ -226,7 +226,7 @@ public class PDFBoxRenderer implements PDDocumentRenderer,
Initializable {
if (pdfParserConfig == null) {
return defaultImageType;
}
- return pdfParserConfig.getOcrImageType();
+ return pdfParserConfig.getOcrImageType().getImageType();
}
protected String getImageFormatName(ParseContext parseContext) {
diff --git
a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-pdf-module/src/test/java/org/apache/tika/parser/pdf/PDFParserTest.java
b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-pdf-module/src/test/java/org/apache/tika/parser/pdf/PDFParserTest.java
index a3ed89497..e3cfe5415 100644
---
a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-pdf-module/src/test/java/org/apache/tika/parser/pdf/PDFParserTest.java
+++
b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-pdf-module/src/test/java/org/apache/tika/parser/pdf/PDFParserTest.java
@@ -38,7 +38,6 @@ import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.apache.commons.io.IOUtils;
-import org.apache.pdfbox.rendering.ImageType;
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Disabled;
@@ -1129,7 +1128,7 @@ public class PDFParserTest extends TikaTest {
pdfParser.getClass().getName());
assertEquals(PDFParserConfig.OCR_STRATEGY.OCR_ONLY,
((PDFParser)
pdfParser).getPDFParserConfig().getOcrStrategy());
- assertEquals(ImageType.RGB,
+ assertEquals(PDFParserConfig.TikaImageType.GRAY.RGB,
((PDFParser)
pdfParser).getPDFParserConfig().getOcrImageType());
}
}