Сканирование файлов, содержащих имя переменной

У меня есть простой фрагмент кода, который в настоящее время использует tesseract OCR для чтения текста в любом заданном изображении, а затем подсчитывает, сколько строк он создает. Тем не менее, я хотел бы найти в каталоге любой документ, содержащий строку (например, M000123456), и вернуть количество документов, содержащих это в своем имени, и сравнить это с выходным числом tesseract. Документы названы так: M000123456_V987654_05-07-2000.pdf. Как лучше всего это сделать?

import java.io.File;

import net.sourceforge.tess4j.Tesseract;
import net.sourceforge.tess4j.TesseractException;

public class Main {
    public static void main(String[] args) throws TesseractException {
        Tesseract tesseract = new Tesseract();

        tesseract.setDatapath("C:\\Users\\mmx0409\\Downloads\\Tess4J-3.4.8-src\\Tess4J\\tessdata");

        // the path of your tess data folder
        // inside the extracted file
        String text
                = tesseract.doOCR(new File("C:\\Users\\mmx0409\\Downloads\\testimage.png"));

        // path of your image file
        System.out.print(text);
        System.out.println(text.lines().count()); // count the number of lines tesseract saw

    }
}

person Seudonym    schedule 05.07.2019    source источник
comment
Что вы имеете в виду, сравнивая это с числовым выводом tesseract?   -  person Vishal Patel    schedule 05.07.2019
comment
Должно быть несколько документов со строкой в ​​​​их имени, и количество документов должно быть равно числу, которое выводит tesseract.   -  person Seudonym    schedule 05.07.2019
comment
Проверьте ответ. Вам нужно передать путь к каталогу, где находятся ваши файлы, и строку поиска, которая в вашем случае M000123456   -  person Vishal Patel    schedule 05.07.2019


Ответы (1)


Вы можете использовать приведенную ниже функцию для подсчета номера документа, в имени которого есть searchString.

public int countDocuments(String directoryPath, String searchString) {
    File folder = new File(directoryPath);

    File[] listOfFiles = folder.listFiles();

    int count = 0;

    for (int i = 0; i < listOfFiles.length; i++) {
        if (listOfFiles[i].isFile()) {
            String fileName = listOfFiles[i].getName();
            if (fileName.contains(searchString)) {
                count++;
            }
        }
    }

    return count;
}
person Vishal Patel    schedule 05.07.2019