This is an automated email from the ASF dual-hosted git repository. tballison pushed a commit to branch TIKA-4848-server in repository https://gitbox.apache.org/repos/asf/tika.git
commit c72c7d985cdde322a2ed16a9161c2fa197686e70 Merge: 03baecec54 05267dd00f Author: tallison <[email protected]> AuthorDate: Mon Aug 31 09:50:19 2026 -0400 Merge remote-tracking branch 'origin/main' into TIKA-4848-server .mvn/extensions.xml | 2 +- .skills/devs/tika-eval-compare/SKILL.md | 28 ++ .skills/devs/tika-eval-compare/run-batch.sh | 179 ++++++++ CHANGES.txt | 67 +++ .../integration-testing/tika-eval-regression.adoc | 60 ++- .../migration-to-4x/migrating-tika-server-4x.adoc | 2 +- docs/modules/ROOT/pages/pipes/performance.adoc | 232 ++++------- .../ROOT/pages/pipes/plugins/filesystem.adoc | 4 + .../ROOT/pages/using-tika/server/index.adoc | 2 +- .../ParsingEmbeddedDocumentExtractor.java | 12 +- .../java/org/apache/tika/parser/ParseRecord.java | 31 ++ .../org/apache/tika/mime/tika-mimetypes.xml | 19 + .../tika/extractor/EmbeddedDepthLimitTest.java | 130 ++++++ .../org/apache/tika/utils/ExceptionUtilsTest.java | 1 + .../org/apache/tika/eval/app/ExtractComparer.java | 16 +- .../tika/eval/app/ExtractComparerRunner.java | 48 ++- .../apache/tika/eval/app/ExtractProfileRunner.java | 34 +- .../org/apache/tika/eval/app/ExtractProfiler.java | 10 +- .../org/apache/tika/eval/app/ProfilerBase.java | 15 + .../java/org/apache/tika/eval/app/RunInfo.java | 314 ++++++++++++++ .../java/org/apache/tika/eval/app/db/Cols.java | 4 + .../org/apache/tika/eval/app/io/PipesReport.java | 127 ++++++ .../eval/app/reports/MarkdownSummaryWriter.java | 57 ++- .../org/apache/tika/eval/app/reports/Report.java | 12 +- .../tika/eval/app/reports/ResultsReporter.java | 14 +- .../src/main/resources/comparison-reports.xml | 115 ++++++ .../src/main/resources/profile-reports.xml | 59 ++- .../apache/tika/eval/app/ComparerBatchTest.java | 144 +++++++ .../tika/eval/app/ComparerOneSidedLedgerTest.java | 103 +++++ .../apache/tika/eval/app/ProfilerBatchTest.java | 37 +- .../tika/eval/app/ProfilerDiscoveryTest.java | 73 ++++ .../java/org/apache/tika/eval/app/RunInfoTest.java | 105 +++++ .../apache/tika/eval/app/io/PipesReportTest.java | 92 +++++ .../extractsB/.run-info/crashes-run-b1.jsonl | 3 + .../extractsB/.run-info/run-info-run-b1.json | 4 + .../test-dirs/pipes-reports/crashes-run-a1.jsonl | 6 + .../test-dirs/pipes-reports/crashes-run-b1.jsonl | 3 + .../test-dirs/pipes-reports/run-info-run-a1.json | 6 + .../test-dirs/pipes-reports/run-info-run-b1.json | 4 + tika-grpc/docker-build/Dockerfile | 2 + tika-parent/pom.xml | 8 +- .../tika-parsers-ml/tika-parser-nlp-module/pom.xml | 2 +- .../tika/detect/TestContainerAwareDetector.java | 16 + .../apache/tika/detect/TestDetectorLoading.java | 14 +- .../java/org/apache/tika/mime/TestMimeTypes.java | 11 + .../src/test/resources/test-documents/testTIFF.tif | Bin 0 -> 25584 bytes .../tika/parser/iwork/IWorkPackageParser.java | 72 +++- .../parser/iwork/iwana/IWork18PackageParser.java | 58 ++- .../apache/tika/parser/iwork/IWorkParserTest.java | 42 ++ .../tika/parser/iwork/iwana/IWork18ParserTest.java | 104 +++++ .../org/apache/tika/parser/dwg/DWGReadParser.java | 3 +- .../org/apache/tika/parser/dwg/DWGParserTest.java | 7 +- .../apache/tika/detect/image/RawTiffDetector.java | 458 +++++++++++++++++++++ .../apache/tika/parser/image/RawTiffParser.java | 31 +- .../tika/detect/image/RawTiffDetectorTest.java | 447 ++++++++++++++++++++ .../tika/parser/image/RawTiffParserTest.java | 53 ++- .../tika-parser-miscoffice-module/pom.xml | 6 +- .../org/apache/tika/parser/epub/EpubParser.java | 40 +- .../tika/parser/geogebra/GeoGebraParser.java | 66 ++- .../tika/parser/geogebra/GeoGebraXMLHandler.java | 15 + .../apache/tika/parser/epub/EpubParserTest.java | 28 ++ .../tika/parser/geogebra/GeoGebraParserTest.java | 52 +++ .../tika-parser-pdf-module/pom.xml | 11 +- .../java/org/apache/tika/parser/pdf/OcrConfig.java | 7 +- .../tika/renderer/pdf/pdfbox/PDFBoxRenderer.java | 22 +- .../org/apache/tika/parser/pdf/PDFParserTest.java | 9 +- .../renderer/pdf/pdfbox/PDFBoxRendererTest.java | 75 ++++ .../testLinkAnnotationsButNoContents.pdf | Bin 0 -> 1236 bytes .../tika/pipes/core/extractor/UnpackExtractor.java | 6 + .../tika/pipes/core/server/ParseHandler.java | 6 +- .../tika/pipes/emitter/fs/FileSystemEmitter.java | 96 ++++- .../pipes/emitter/fs/FileSystemEmitterConfig.java | 8 +- .../pipes/emitter/fs/FileSystemEmitterTest.java | 134 +++++- .../tika-pipes-google-drive/pom.xml | 2 +- .../config/loader/TikaObjectMapperFactory.java | 5 + .../config/loader/TikaObjectMapperFactoryTest.java | 53 +++ tika-server/docker-build/full/Dockerfile | 2 + tika-server/docker-build/full/Dockerfile.snapshot | 2 + 78 files changed, 3855 insertions(+), 292 deletions(-) diff --cc CHANGES.txt index 889019181a,7061f1e087..3880a79543 --- a/CHANGES.txt +++ b/CHANGES.txt @@@ -1,5 -1,52 +1,57 @@@ Release 4.1.0 - unreleased ++ * tika-server error bodies (the 422/500 exception mapper, /meta/{field}) ++ now honor the exception-reporting policy; /meta/{field} returns the ++ already-formatted container exception instead of re-wrapping it with ++ server frames. Completes TIKA-4848 (TIKA-4848). ++ + * The exception-reporting policy now also governs the messages a pipes + worker returns (fetch/emit/crash) and the container exception it + records; part of TIKA-4848 step 3 (TIKA-4848). + + * Allow image compression settings in PDFBox-based renderer (TIKA-4862). + + * The tika-server full and tika-grpc Docker images set OMP_THREAD_LIMIT=1: + to avoid oversubscribing the CPU under forked parse workers (TIKA-4863). + + * embedded-limits maxDepth counts embedding levels again instead of the + parsers a parse passes through; with AutoDetectParser over DefaultParser + every value above 1 used to stop one level early (TIKA-4857). + + * GeoGebraParser emits the icon of a tool (*.ggt, the macro's iconFile) + as its THUMBNAIL embedded document; tool files have no thumbnail of + their own (TIKA-4831). + + * Enum values in JSON configuration are matched case-insensitively, so + "no_ocr" works as well as "NO_OCR"; the server docs used the lower-case + form in their examples (TIKA-4859). + + * The preview image of iWork '09 packages (QuickLook/Thumbnail.jpg) and of + iWork '18 packages (preview.jpg) is emitted as a THUMBNAIL embedded + document, as it already was for iWork '13 (TIKA-4854). + + * Raw camera formats are detected by content: RawTiffDetector tells + Nikon NEF/NRW, Pentax PEF/PTX, Sony ARW/SRF/SR2, Samsung SRW and Adobe + DNG from a plain TIFF by their image directory (DNGVersion, the vendor + Compression codes, or a CFA/LinearRaw image plus Make), and Fuji RAF, + Panasonic RW2, Minolta MRW and the remaining Olympus ORF byte orders + get magic entries. Streams without a file name used to be image/tiff. + image/x-raw-samsung (*.srw) is new and parsed by RawTiffParser + (TIKA-4861). + + * DWGReadParser emits the drawing's THUMBNAILIMAGE as a THUMBNAIL embedded + document instead of INLINE (TIKA-4853). + + * EpubParser emits the cover image named by the OPF (the EPUB 3 + cover-image manifest property, or the EPUB 2 cover meta) as a THUMBNAIL + embedded document (TIKA-4852). + + * RawTiffParser marks only the largest embedded JPEG preview as the + THUMBNAIL embedded document; the smaller previews of the same image are + INLINE images named image-N.jpg. Previously every preview was a + THUMBNAIL, so a client had to compare them to find the representative + one (TIKA-4851). + * New exception-reporting parse-context config controls how much of an exception is written to tk:exception:* metadata for the container and embedded documents alike: FULL (default), MESSAGE_REDACTED (stack trace
