Использование API Google Cloud Vision для извлечения текста из изображения / pdf - PullRequest
1 голос
/ 05 августа 2020

Я работаю над проектом, где у меня есть данные в виде изображения jpg (у меня есть такая же копия в pdf), и я пытался преобразовать pdf в csv, но не удалось успешно преобразовать все данные как у меня есть некоторые нечитаемые символы. Потому что, если этот PDF-файл находится на английском языке sh, я могу каким-то образом успешно преобразовать в CSV, но если он в символах utf-8 (индийский язык), тогда у меня возникла проблема с преобразованием. Итак, следующий вариант, который я попробовал, - это API облачного видения OCR, который был предоставлен Google. Я могу успешно извлечь текст из этого прикрепленного изображения независимо от символа engligh или utf-8, но его преобразование извлеченного текста в строку кажется сложным. Я не знаю, есть ли у нас API для чтения оглавления.

введите описание изображения здесь

Это фактическое изображение на английском языке sh, но у меня те же данные в utf-8. Когда я использую api облачного видения, я получаю следующий результат (примечание: я пробовал использовать будущий тип DOCUMENT_TEXT_DETECTION и TEXT_DETECTION).

[
    {
        "mid_": "",
        "locale_": "en",
        "description_": "Page:1\nSI.No\nName of the agent\nIncentive\nAmt\nExecutive\n|1111 Main street -\nJames mart, Sales executive)\n1112 Main street -\n|Cameron mart, Sales executive)\n1\n200001\n2\n50001\nAgent\n1113 Main street -\nJames mart, Internal agent\n|(Comercial devision)\n1114 Main street
-\nCameron mart, Sales executive)\n1000\n3\n1500\n",
        "score_": 0,
        "confidence_": 0,
        "topicality_": 0,
        "boundingPoly_": {
            "vertices_": [
                {
                    "x_": 25,
                    "y_": 31,
                    "memoizedIsInitialized": -1,
                    "unknownFields": {
                        "fields": {},
                        "fieldsDescending": {}
                    },
                    "memoizedSize": -1,
                    "memoizedHashCode": 0
                },
                {
                    "x_": 690,
                    "y_": 31,
                    "memoizedIsInitialized": -1,
                    "unknownFields": {
                        "fields": {},
                        "fieldsDescending": {}
                    },
                    "memoizedSize": -1,
                    "memoizedHashCode": 0
                },
                {
                    "x_": 690,
                    "y_": 457,
                    "memoizedIsInitialized": -1,
                    "unknownFields": {
                        "fields": {},
                        "fieldsDescending": {}
                    },
                    "memoizedSize": -1,
                    "memoizedHashCode": 0
                },
                {
                    "x_": 25,
                    "y_": 457,
                    "memoizedIsInitialized": -1,
                    "unknownFields": {
                        "fields": {},
                        "fieldsDescending": {}
                    },
                    "memoizedSize": -1,
                    "memoizedHashCode": 0
                }
            ],
            "normalizedVertices_": [],
            "memoizedIsInitialized": -1,
            "unknownFields": {
                "fields": {},
                "fieldsDescending": {}
            },
            "memoizedSize": -1,
            "memoizedHashCode": 0
        },
        "locations_": [],
        "properties_": [],
        "memoizedIsInitialized": -1,
        "unknownFields": {
            "fields": {},
            "fieldsDescending": {}
        },
        "memoizedSize": -1,
        "memoizedHashCode": 0
    },
    {
        "mid_": "",
        "locale_": "",
        "description_": "Page:1",
        "score_": 0,
        "confidence_": 0,
        "topicality_": 0,
        "boundingPoly_": {
            "vertices_": [
                {
                    "x_": 631,
                    "y_": 32,
                    "memoizedIsInitialized": -1,
                    "unknownFields": {
                        "fields": {},
                        "fieldsDescending": {}
                    },
                    "memoizedSize": -1,
                    "memoizedHashCode": 0
                },
                {
                    "x_": 690,
                    "y_": 31,
                    "memoizedIsInitialized": -1,
                    "unknownFields": {
                        "fields": {},
                        "fieldsDescending": {}
                    },
                    "memoizedSize": -1,
                    "memoizedHashCode": 0
                },
                {
                    "x_": 690,
                    "y_": 48,
                    "memoizedIsInitialized": -1,
                    "unknownFields": {
                        "fields": {},
                        "fieldsDescending": {}
                    },
                    "memoizedSize": -1,
                    "memoizedHashCode": 0
                },
                {
                    "x_": 631,
                    "y_": 49,
                    "memoizedIsInitialized": -1,
                    "unknownFields": {
                        "fields": {},
                        "fieldsDescending": {}
                    },
                    "memoizedSize": -1,
                    "memoizedHashCode": 0
                }
            ],
            "normalizedVertices_": [],
            "memoizedIsInitialized": -1,
            "unknownFields": {
                "fields": {},
                "fieldsDescending": {}
            },
            "memoizedSize": -1,
            "memoizedHashCode": 0
        },
        "locations_": [],
        "properties_": [],
        "memoizedIsInitialized": -1,
        "unknownFields": {
            "fields": {},
            "fieldsDescending": {}
        },
        "memoizedSize": -1,
        "memoizedHashCode": 0
    },
    {
        "mid_": "",
        "locale_": "",
        "description_": "SI.No",
        "score_": 0,
        "confidence_": 0,
        "topicality_": 0,
        "boundingPoly_": {
            "vertices_": [
                {
                    "x_": 26,
                    "y_": 57,
                    "memoizedIsInitialized": -1,
                    "unknownFields": {
                        "fields": {},
                        "fieldsDescending": {}
                    },
                    "memoizedSize": -1,
                    "memoizedHashCode": 0
                },
                {
                    "x_": 71,
                    "y_": 57,
                    "memoizedIsInitialized": -1,
                    "unknownFields": {
                        "fields": {},
                        "fieldsDescending": {}
                    },
                    "memoizedSize": -1,
                    "memoizedHashCode": 0
                },
                {
                    "x_": 71,
                    "y_": 70,
                    "memoizedIsInitialized": -1,
                    "unknownFields": {
                        "fields": {},
                        "fieldsDescending": {}
                    },
                    "memoizedSize": -1,
                    "memoizedHashCode": 0
                },
                {
                    "x_": 26,
                    "y_": 70,
                    "memoizedIsInitialized": -1,
                    "unknownFields": {
                        "fields": {},
                        "fieldsDescending": {}
                    },
                    "memoizedSize": -1,
                    "memoizedHashCode": 0
                }
            ],
            "normalizedVertices_": [],
            "memoizedIsInitialized": -1,
            "unknownFields": {
                "fields": {},
                "fieldsDescending": {}
            },
            "memoizedSize": -1,
            "memoizedHashCode": 0
        },
        "locations_": [],
        "properties_": [],
        "memoizedIsInitialized": -1,
        "unknownFields": {
            "fields": {},
            "fieldsDescending": {}
        },
        "memoizedSize": -1,
        "memoizedHashCode": 0
    },

   

Я разместил здесь лишь немного информации из всего ответа из-за ограничение публикации всех данных в теле.

Я искал, чтобы извлечь данные строка за строкой и столбцом, но это дало результат в заданном формате. Я вижу трудность преобразования этого результата в строку за строкой снова. Не могли бы вы помочь мне достичь ожидаемого результата. Оцените ваши ответы! ..

Кроме того, если бы у нас есть какой-либо api или инструмент для преобразования pdf в csv (включая набор символов UTF-8 в формате pdf на индийском языке), было бы здорово ....

вот код, который я использую в Springboot для вызова этого API облачного видения.

ImageContext imageContext = ImageContext.newBuilder().addLanguageHints("ta").build();
Resource imageResource = this.resourceLoader.getResource("  file:src/main/resources/Incentive.jpg");
AnnotateImageResponse response = this.cloudVisionTemplate.analyzeImage(imageResource,
        Feature.Type.DOCUMENT_TEXT_DETECTION);
...