Рубрики
Без рубрики

Начало работы с распознаванием оптического символа с использованием Python и AWS

В этом блоге мы будем использовать AWS Textract для сканирования и извлечения текстов документа с картинки и … Помечено Python, AWS, Serverless, MachineLearning.

В этом блоге мы будем использовать AWS Textract для сканирования и извлечения текстов документа с картинки и получить выходной ответ JSON. Мы также будем использовать AWS Lambda функцию с Python, чтобы построить бэкэнд.

Если вы прочитали мой предыдущий блог Serverless AWS Textract Document Scanner Вы можете увидеть, что мы создали конечную точку, чтобы запустить AWS Textract, используя Node.js Отказ Однако были несколько проблем, которые я столкнулся с тем, что только исправлено, переключаясь на Python. Например, одна из самых больших проблем, с которыми я сталкивался при использовании Node.js для запуска моего приложения, было время запроса слишком долго. Иногда это займет до 30 секунд для отклика. Как вы можете сказать, это ужасно. Поэтому я решил переключить свой стек из Node.js в Python, и теперь среднее время для запуска запросов упало с 25 до 2 с. Довольно хорошее право? Я знаю. Давайте посмотрим, как мы можем сделать это.

1. Настройка бэкэки с сервесом с помощью Python

Предполагая, что вы уже знаете, как работает безвестен, мы можем продолжить с помощью AWS Textract и потоком следует. Если вы не знакомы с безвесочником с узлом, пожалуйста, не прыгайте на пистолет, перейдите на оформление каких-либо туров здесь Отказ

Хорошо. Давайте быстро настроим наш серверу

sls create --template aws-python --path myService

Убедитесь, что у вас установлены следующие зависимости.

  1. BOTO3.
  2. json.

ПРИМЕЧАНИЕ

Что-то, что нужно помнить, прежде чем продолжить

  • Убедитесь, что у вас есть надлежащее разрешение на эту задачу,
  • Проверьте свой регион и
  • Убедитесь, что URL ведро является точным.

2. Теперь, как только AWS SDK настроен, мы можем написать код для Textract

import json
import boto3

def textractAnalyzer(event, context):
    bucket="YOUR_BUCKET_NAME"
    document = json.loads(event['body'])['fileKey']
    client = boto3.client('textract')

    #process using S3 object
    response = client.detect_document_text(
        Document={'S3Object': {'Bucket': bucket, 'Name': document}})

    #Get the text blocks
    blocks=response['Blocks']

    # All Text By Line
    texts_by_line = dataPurifierByLine(blocks)

    return {
        'statusCode': 200,
        'body': json.dumps({
            "fileKey": document,
            "textByLine": texts_by_line,
            "texTractblocks" : blocks ## Full response from textract
        }),
    }

def dataPurifierByLine(blocks):
    result = []
    for block in blocks:
        if block['BlockType'] == "LINE":
            entry = {
                "line": block['Text'],
                "confidence": block['Confidence']
            }
            result.append(entry)
    return result

Следующий код находит файл с определенным ключом в S3/Pubode/**, а затем работает Textract Analysis.

3. Разверните код

SLS развертывает Найдите конечную точку, для меня это выглядит так

4. Для нашего следующего шага мы сделаем файл вручную в ведро, чтобы мы могли использовать его для тестирования.

  1. Перейти к S3,
  2. Перейти к/публично
  3. а затем загрузить файл IMG
Я использую эту старую квитанцию

5. Наконец, проверьте его на почтальон.

полезная нагрузка:

    "fileKey" : "public/demo.jpeg"
  • Если он дает вам ошибку Timeout, измените функцию в течение 30-х годов на файл .yml.
  • Вы можете увидеть тип данных, которые мы возвращаем. Для этой демонстрации я возьму каждую строку и добавлю их вместе в массиве.

Ваш ответ должен выглядеть что-то вроде этого

{
    "fileKey": "public/demo.jpeg",
    "textByLine": [
        {
            "line": "01/027 APPROVED - THANK YOU",
            "confidence": 99.5232162475586
        },
        .
        .
        .
        .
    ],
    "texTractblocks": [
        {
            "BlockType": "PAGE",
            "Geometry": {
                "BoundingBox": {
                    "Width": 0.8844140768051147,
                    "Height": 0.8354079723358154,
                    "Left": 0.048781704157590866,
                    "Top": 0.15526676177978516
                },
                "Polygon": [
                    {
                        "X": 0.07131516188383102,
                        "Y": 0.1597394049167633
                    },
                    {
                        "X": 0.9331957697868347,
                        "Y": 0.15526676177978516
                    },
                    {
                        "X": 0.9245083928108215,
                        "Y": 0.9906747341156006
                    },
                    {
                        "X": 0.048781704157590866,
                        "Y": 0.9588059782981873
                    }
                ]
            },
            "Id": "9b384b8d-dcb8-4596-8511-af18659a9787",
            "Relationships": [
                {
                    "Type": "CHILD",
                    "Ids": [
                        "250a9339-d1ed-4c21-ad50-5a2154cd89da",
                        "aac798f2-3c05-41a2-979c-869509b53d58",
                        "eb878ad4-8b37-415d-b6ac-8cc909dab0a3",
                        "376c375f-94d1-47b7-9f4e-a9fb203043f2",
                        "628dbdd6-1225-43c9-867c-9a83ea91e1ae",
                        "aecacbf9-8727-4334-a904-6795df9c455b",
                        "c8e51b32-d010-4300-8e98-6002d6e5eee3",
                        "20e6422a-16c0-41b6-be2d-6c0c9d09ed44",
                        "82bfdb0d-20bd-407f-bc3b-33aef24fc097",
                        "aa3125fd-2e2d-48a5-9416-84ef7a987976",
                        "10ec162e-a937-4cd2-87d5-6d6b9205d719",
                        "b05a2ece-0a7f-4e65-87e5-fe4e49277f25",
                        "561f5c75-bbb4-4dc6-8660-fbc3f7386f9c",
                        "665bb6fe-8ac9-44b3-af49-189ac3ea7757",
                        "5d42a676-0621-42ad-89ff-7a16873290c4",
                        "bdb02d6e-3b80-4913-8359-ef7e70068582",
                        "28691f75-aef5-418d-8519-1d05bb991fda",
                        "8c4b9208-c2c5-4ad8-96a6-35e962043fbd"
                    ]
                }
            ]
        },
        .
        .
        .
}

Вот и все!

Следующий шаг

На следующей неделе я буду продолжаться с этим приложением и построить передний конец для него, используя трепетание и AWS Amplify.

  • Мы будем настроить AWS Amberify Suiting Fulter,
  • Настройте нашу камеру для фотографирования.
  • Как только это сделано, мы подтвердим и отправлю картинку в магазин S3,
  • Который будет вызвать нашу функцию лямбда и отправить нам ответ на наш интерфейс.

Оригинал: “https://dev.to/sehmimhaque/getting-started-with-optical-character-recognition-using-python-and-aws-2mc8”