Ich habe versucht, mit AWS Textract Text aus einem Bild zu extrahieren
Generieren Sie mit IAM einen Zugriffsschlüssel über die AWS-Konsole
Geben Sie den Zugriffsschlüssel und den geheimen Zugriffsschlüssel ein, die Sie beim Generieren des Zugriffsschlüssels erhalten haben. Geben Sie als Standardregionsnamen ap-south-1 (Asien-Pazifik-Mumbai) an, wo Textract verwendet werden kann. Das Ausgabeformat ist json.
$ aws configure
AWS Access Key ID [None]: XXXX
AWS Secret Access Key [None]: XXXX
Default region name [None]: ap-south-1
Default output format [None]: json
Vier. Öffnen Sie die Anaconda-Eingabeaufforderung und erstellen Sie eine Python 3.6-Umgebung.
$ conda create -n py36 python=3.6
$ conda activate py36
Fünf. Installieren Sie die Bibliothek
$ pip install boto3
$ pip install opencv-python
import boto3
import cv2
import os.path
def process_text_analysis(image):
client = boto3.client('textract')
image_data = cv2.imencode(".png ", image)[1].tostring()
response = client.analyze_document(Document={'Bytes': image_data}, FeatureTypes=["TABLES", "FORMS"])
blocks = response['Blocks']
return blocks
def draw_blocks(image, blocks):
height, width = image.shape[:2]
draw = image.copy()
for block in blocks:
if block['BlockType'] == "WORD":
vertices = [(int(width * block['Geometry']['Polygon'][i]['X']), int(height * block['Geometry']['Polygon'][i]['Y'])) for i in range(len(block['Geometry']['Polygon']))]
cv2.putText(draw, block['Text'], vertices[0], cv2.FONT_HERSHEY_PLAIN, 1, (255, 255, 255), 1, cv2.LINE_AA)
cv2.rectangle(draw, vertices[0], vertices[2], (0, 255, 0))
return draw
filename = "338px-Atomist_quote_from_Democritus.png "
image = cv2.imread(filename, cv2.IMREAD_COLOR)
blocks = process_text_analysis(image)
print("Blocks detected: " + str(len(blocks)))
draw = draw_blocks(image, blocks)
cv2.imshow("draw", draw)
cv2.waitKey(0)
input | output |
---|---|
Danke für deine harte Arbeit.
Recommended Posts