-
Notifications
You must be signed in to change notification settings - Fork 0
/
app.py
96 lines (75 loc) · 2.88 KB
/
app.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
from flask import Flask, render_template, request,jsonify
import boto3
app = Flask(__name__)
from werkzeug.utils import secure_filename
from trp import Document
from collections import OrderedDict
# Enter your key credentials in double quotes
ACCESS_KEY_ID="your_key"
ACCESS_SECRET_KEY="your_secret_key"
s3 = boto3.client('s3',
aws_access_key_id=ACCESS_KEY_ID,
aws_secret_access_key= ACCESS_SECRET_KEY,
)
textract = boto3.client('textract',
aws_access_key_id=ACCESS_KEY_ID,
aws_secret_access_key = ACCESS_SECRET_KEY, region_name='us-west-2')
# Enter your bucket name in double quotes
BUCKET_NAME = "your_bucket_name"
@app.route('/')
def home():
return render_template("file_upload_to_s3.html")
@app.route('/upload',methods=['post'])
def upload():
if request.method == 'POST':
img = request.files['file']
if img:
filename = secure_filename(img.filename)
img.save(filename)
s3.upload_file(
Bucket = BUCKET_NAME,
Filename=filename,
Key = filename
)
msg = "Upload Done !"
return render_template("file_upload_to_s3.html",msg =msg)
@app.route('/extract', methods=['post'])
def extract():
if request.method == 'POST':
objs = s3.list_objects_v2(Bucket=BUCKET_NAME, Delimiter='/') ['Contents']
print(objs)
objs.sort(key=lambda e: e['LastModified'], reverse=True)
print("******")
print(objs[0])
first_item = list(objs[0].items())[0]
print(first_item[1])
documentName = str(first_item[1])
# Call Amazon Textract
with open(documentName, "rb") as document:
response = textract.analyze_document(
Document={
'Bytes': document.read(),
},
FeatureTypes=["FORMS"])
doc = Document(response)
text = []
for page in doc.pages:
key = ""
field = page.form.getFieldByKey(key)
if(field):
print("Key: {}, Value: {}".format(field.key, field.value))
field_amt = page.form.searchFieldsByKey("")
for f in field_amt:
print("Key: {}, Value: {}".format(f.key, f.value))
text.append(f.key)
text.append(f.value)
print(text)
key = ""
fields = page.form.searchFieldsByKey(key)
for field in fields:
print("Key: {}, Value: {}".format(field.key, field.value))
text.append(field.key)
text.append(field.value)
return render_template("file_upload_to_s3.html",text = text)
if __name__ == "__main__":
app.run(debug=True)