Python 및 AWS를 사용하여 광학 문자 인식 시작하기
이전 블로그Serverless AWS Textract Document Scanner를 읽었다면
Node.js
를 사용하여 AWS Textract를 실행하는 엔드포인트를 생성했음을 알 수 있습니다. 그러나 파이썬으로 전환해야만 해결되는 몇 가지 문제가 있었습니다. 예를 들어 node.js를 사용하여 앱을 실행하는 동안 직면한 가장 큰 문제 중 하나는 요청 시간이 너무 길다는 것이었습니다. 경우에 따라 응답 완료에 최대 30초가 걸릴 수 있습니다. 당신이 알 수 있듯이 그것은 끔찍합니다. 그래서 내 스택을 node.js에서 Python으로 전환하기로 결정했고 이제 평균 요청 실행 시간이 25초에서 2초로 떨어졌습니다. 꽤 멋지죠? 알아요. 어떻게 할 수 있는지 봅시다.1. Python을 사용하여 서버리스로 백엔드 설정
서버리스 작동 방식을 이미 알고 있다고 가정하면 AWS Textract와 그 흐름을 계속 진행할 수 있습니다. 노드가 포함된 서버리스에 익숙하지 않은 경우 총을 던지지 말고 tutshere를 확인하십시오.
괜찮아. 서버리스를 빠르게 설정해 보겠습니다.
sls create --template aws-python --path myService
다음 종속성이 설치되어 있는지 확인하십시오.
노트
계속하기 전에 명심해야 할 사항
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/public/**에서 특정 키가 있는 파일을 찾은 다음 Textract 분석을 실행합니다.
3. 코드 배포
sls deploy
끝점을 찾으십시오. 저에게는 다음과 같습니다.4. 다음 단계에서는 테스트에 사용할 수 있도록 파일을 버킷에 수동으로 드롭합니다.
이 오래된 영수증을 사용하고 있습니다.
5. 마지막으로 우편 배달부에서 테스트합니다.
유효 탑재량:
"fileKey" : "public/demo.jpeg"
응답은 다음과 같아야 합니다.
{
"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"
]
}
]
},
.
.
.
}
그게 다야!
다음 단계
다음 주에는 이 앱을 계속 사용하고 Flutter와 AWS Amplify를 사용하여 프런트 엔드를 구축할 것입니다.
Reference
이 문제에 관하여(Python 및 AWS를 사용하여 광학 문자 인식 시작하기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/sehmimhaque/getting-started-with-optical-character-recognition-using-python-and-aws-2mc8텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)