我目前正在开发一个java项目,该项目从文件系统中对PDF进行OCR以搜索其内容。
在这个项目中,我正在用户指定的文件夹中搜索。我正在通过 OCR 获取 PDF 内容并检查其中是否包含用户提供的关键字。
我试图确保当对 PDF 进行 OCR 时,爬行或遍历继续进行(必须在另一个线程或几个线程上),以便系统的性能不会显着降低。
有办法做到这一点吗?我已经在下面包含了我正在使用的遍历代码..
public void traverseDirectory(File[] files) {
if (files != null) {
for (File file : files) {
if (file.isDirectory()) {
traverseDirectory(file.listFiles());
} else {
String[] type = file.getName().toString().split("\\.(?=[^\\.]+$)");
if (type.length > 1) {
if (type[1].equals("pdf")) {
//checking content goes here
}
}
}
}
}
}
您可以使用
Files.walkFileTree
:
ExecutorService executor = Executors.newFixedThreadPool(threadCount);
PdfOcrService service = ...
Path rootPath = Paths.get("/path/to/your/directory");
Files.walkFileTree(rootPath, new SimpleFileVisitor<Path>() {
public void visitFile(Path path, BasicFileAttributes attrs) {
executor.submit(() -> {
service.performOcrOnFile(path);
});
}
});