Получение плохих данных об изображении с помощью Google vision API на Java - PullRequest
0 голосов
/ 22 октября 2019

Я пытаюсь DOCUMENT_TEXT_DETECTION для распознавания текста со сканированными изображениями.

Изображения в формате JPEG, и разрешение также достаточно хорошее, как указано здесь

Ниже приведенМетод Java, который я использую для извлечения объекта полного ответа.

private static void extractText(String imagePath) throws IOException {
    int MAX_RESULTS = 10000;

    // Instantiates a client
    try (ImageAnnotatorClient vision = ImageAnnotatorClient.create()) {

        // The path to the image file to annotate
        String fileName = imagePath;

        // Reads the image file into memory
        Path path = Paths.get(fileName);
        byte[] data = Files.readAllBytes(path);
        ByteString imgBytes = ByteString.copyFrom(data);

        // Builds the image annotation request
        List<AnnotateImageRequest> requests = new ArrayList<>();
        Image img = Image.newBuilder().setContent(imgBytes).build();
        Feature feat = Feature.newBuilder().setType(Type.DOCUMENT_TEXT_DETECTION).setMaxResults(MAX_RESULTS)
                .build();
        AnnotateImageRequest request = AnnotateImageRequest.newBuilder().addFeatures(feat).setImage(img).build();
        requests.add(request);

        System.out.println("Request Generated for : " + fileName);

        // Performs label detection on the image file
        BatchAnnotateImagesResponse response = vision.batchAnnotateImages(requests);
        List<AnnotateImageResponse> responses = response.getResponsesList();

        System.out.println("Recived Response : " + responses.size());

        System.out.println("Full Response of : " + fileName + " \n\n" + new Gson().toJson(responses));

    } catch (Exception e) {
        e.printStackTrace();
    }
}

Он работает, как и ожидалось, с парой изображений, которые я пробовал изначально.

Я получаю сообщение об ошибке ниже для 4 изображенийЯ пытался.

Я уже пытался загрузить изображения в Try It портал Google Vision. Там тоже не работает.

[
    {
        "bitField0_": 0,
        "faceAnnotations_": [],
        "landmarkAnnotations_": [],
        "logoAnnotations_": [],
        "labelAnnotations_": [],
        "localizedObjectAnnotations_": [],
        "textAnnotations_": [],
        "error_": {
            "bitField0_": 0,
            "code_": 3,
            "message_": "Bad image data.",
            "details_": [],
            "memoizedIsInitialized": -1,
            "unknownFields": {
                "fields": {},
                "fieldsDescending": {}
            },
            "memoizedSize": -1,
            "memoizedHashCode": 0
        },
        "memoizedIsInitialized": -1,
        "unknownFields": {
            "fields": {},
            "fieldsDescending": {}
        },
        "memoizedSize": -1,
        "memoizedHashCode": 0
    }
]

Я использую зависимость ниже maven для доступа к Vision API

        <dependency>
            <groupId>com.google.cloud</groupId>
            <artifactId>google-cloud-vision</artifactId>
            <version>1.96.0</version>
        </dependency>
...