Azure OCR [печатный текст] не читает строки квитанции в правильном порядке - PullRequest
0 голосов
/ 17 октября 2019

Цель приложения: прочитать изображение квитанции, извлечь название магазина / организации вместе с общей уплаченной суммой. Подайте его на веб-форму для автозаполнения и отправки.

Опубликовать запрос - "https://*.cognitiveservices.azure.com/vision/v2.0/recognizeText?{params}

Получить запрос - https://*.cognitiveservices.azure.com/vision/v2.0/textOperations/{operationId}

однако, когда я получу результаты обратноиногда это сбивает с толку при упорядочении строк (см. рисунок ниже [похожие результаты в ответе JSON]) Screenshot from Azure Computer Vision Page

Это смешивание приводит к получению итоговой суммы в размере 0,88

Подобные ситуации существуют для 2 из 9 тестовых квитанций.

В: Почему это работает для аналогичных и разных структурированных квитанций, но по какой-то причине не согласовано для всех? Также есть идеи как обойти это?

1 Ответ

0 голосов
/ 18 октября 2019

Я быстро взглянул на ваше дело.

Результат распознавания

Как вы упоминали, результаты не упорядочены, как вы думали. Я быстро взглянул на значения ограничивающих рамок и не знаю, как они упорядочены. Вы можете попытаться объединить поля на основе этого, но есть служба, которая уже делает это для вас.

Распознаватель форм:

Использование распознавателя форм и вашего изображенияЯ получил следующие результаты для вашей квитанции:

Как вы можете видеть ниже, understandingResults содержит total со своим значением ("value": 9.11), MerchantName ("Chick-fil-a ") и другие поля.

{
    "status": "Succeeded",
    "recognitionResults": [
        {
            "page": 1,
            "clockwiseOrientation": 0.17,
            "width": 404,
            "height": 1226,
            "unit": "pixel",
            "lines": [
                {
                    "boundingBox": [
                        108,
                        55,
                        297,
                        56,
                        296,
                        71,
                        107,
                        70
                    ],
                    "text": "Welcome to Chick-fil-a",
                    "words": [
                        {
                            "boundingBox": [
                                108,
                                56,
                                169,
                                56,
                                169,
                                71,
                                108,
                                71
                            ],
                            "text": "Welcome",
                            "confidence": "Low"
                        },
                        {
                            "boundingBox": [
                                177,
                                56,
                                194,
                                56,
                                194,
                                71,
                                177,
                                71
                            ],
                            "text": "to"
                        },
                        {
                            "boundingBox": [
                                201,
                                56,
                                296,
                                57,
                                296,
                                71,
                                201,
                                71
                            ],
                            "text": "Chick-fil-a"
                        }
                    ]
                },
...
OTHER LINES CUT FOR DISPLAY
...
            ]
        }
    ],
    "understandingResults": [
        {
            "pages": [
                1
            ],
            "fields": {
                "Subtotal": null,
                "Total": {
                    "valueType": "numberValue",
                    "value": 9.11,
                    "text": "$9.11",
                    "elements": [
                        {
                            "$ref": "#/recognitionResults/0/lines/32/words/0"
                        },
                        {
                            "$ref": "#/recognitionResults/0/lines/32/words/1"
                        }
                    ]
                },
                "Tax": {
                    "valueType": "numberValue",
                    "value": 0.88,
                    "text": "$0.88",
                    "elements": [
                        {
                            "$ref": "#/recognitionResults/0/lines/31/words/0"
                        },
                        {
                            "$ref": "#/recognitionResults/0/lines/31/words/1"
                        },
                        {
                            "$ref": "#/recognitionResults/0/lines/31/words/2"
                        }
                    ]
                },
                "MerchantAddress": null,
                "MerchantName": {
                    "valueType": "stringValue",
                    "value": "Chick-fil-a",
                    "text": "Chick-fil-a",
                    "elements": [
                        {
                            "$ref": "#/recognitionResults/0/lines/0/words/2"
                        }
                    ]
                },
                "MerchantPhoneNumber": {
                    "valueType": "stringValue",
                    "value": "+13092689500",
                    "text": "309-268-9500",
                    "elements": [
                        {
                            "$ref": "#/recognitionResults/0/lines/4/words/0"
                        }
                    ]
                },
                "TransactionDate": {
                    "valueType": "stringValue",
                    "value": "2019-06-21",
                    "text": "6/21/2019",
                    "elements": [
                        {
                            "$ref": "#/recognitionResults/0/lines/6/words/0"
                        }
                    ]
                },
                "TransactionTime": {
                    "valueType": "stringValue",
                    "value": "13:00:57",
                    "text": "1:00:57 PM",
                    "elements": [
                        {
                            "$ref": "#/recognitionResults/0/lines/6/words/1"
                        },
                        {
                            "$ref": "#/recognitionResults/0/lines/6/words/2"
                        }
                    ]
                }
            }
        }
    ]
}

Подробнее о распознавателе форм: https://azure.microsoft.com/en-us/services/cognitive-services/form-recognizer/

...