gpt4 book ai didi

java - 如何使用 Apache Tika 比较两个 pdf 文档

转载 作者:行者123 更新时间:2023-12-03 02:04:01 25 4
gpt4 key购买 nike

我想比较两个 pdf 文档(不仅是内容,还包括其他信息,例如页眉页脚和样式)。

我知道我们可以使用 Apache tika 进行比较。我学会了解析 pdf 文档,并能够提取一些元数据信息,例如标题、作者。

我现在可以这样做 -

import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;

import org.apache.tika.exception.TikaException;
import org.apache.tika.metadata.Metadata;
import org.apache.tika.parser.AutoDetectParser;
import org.apache.tika.parser.ParseContext;
import org.apache.tika.parser.Parser;

import org.apache.tika.sax.BodyContentHandler;

import org.xml.sax.ContentHandler;
import org.xml.sax.SAXException;

public class CompareDocs {
public CompareDocs() {
super();
}

private void parseResource(String resourceName) {
System.out.println("Parsing resource : " + resourceName);
InputStream inputStream = null;

try {
try {
inputStream = new BufferedInputStream(new FileInputStream(new File(resourceName)));
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}



Parser parser = new AutoDetectParser();
ContentHandler contentHandler = new BodyContentHandler();
Metadata metadata = new Metadata();

parser.parse(inputStream, contentHandler, metadata, new ParseContext());

for (String name : metadata.names()) {
String value = metadata.get(name);
System.out.println("Metadata Name: " + name);
System.out.println("Metadata Value: " + value);
}

System.out.println("Title: " + metadata.get("title"));
System.out.println("Author: " + metadata.get("Author"));
System.out.println("content: " + contentHandler.toString());

} catch (IOException e) {
e.printStackTrace();
} catch (TikaException e) {
e.printStackTrace();
} catch (SAXException e) {
e.printStackTrace();
} finally {
if (inputStream != null) {
try {
inputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}

public static void main(String[] args) throws Exception {
CompareDocs apacheTikaParser = new CompareDocs();
apacheTikaParser.parseResource("C:\\Users\\prakhar\\Desktop\\beautiful_code.pdf");
}
}

我们如何提取更多信息,例如第一部分的标题距离、图像高度和宽度等,并使用 Apache Tika 将这些信息与另一个 pdf 进行比较。

最佳答案

Tika检测并提取元数据和结构化文本内容。不支持查找第一节的标题距离、图像的高度和宽度等。

您可以尝试PDFBoxItext .

关于java - 如何使用 Apache Tika 比较两个 pdf 文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21253025/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com