-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathidentity_document_parser.go
66 lines (53 loc) · 1.77 KB
/
identity_document_parser.go
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
package textractor
import (
"github.com/aws/aws-sdk-go-v2/aws"
"github.com/aws/aws-sdk-go-v2/service/textract/types"
)
type identityDocumentParser struct {
blocks []types.Block
fields []types.IdentityDocumentField
}
func newIdentityDocumentParser(identityDocument types.IdentityDocument) *identityDocumentParser {
return &identityDocumentParser{
blocks: identityDocument.Blocks,
fields: identityDocument.IdentityDocumentFields,
}
}
func (idp *identityDocumentParser) createIdentityDocument() *IdentityDocument {
fields, fieldsMap := idp.createFields()
return &IdentityDocument{
document: idp.createDocument(),
fields: fields,
fieldsMap: fieldsMap,
}
}
func (idp *identityDocumentParser) createDocument() *Document {
parser := newBlockParser(idp.blocks)
return parser.createDocument()
}
func (idp *identityDocumentParser) createFields() ([]*IdentityDocumentField, map[IdentityDocumentFieldType]*IdentityDocumentField) {
fields := make([]*IdentityDocumentField, len(idp.fields))
fieldsMap := make(map[IdentityDocumentFieldType]*IdentityDocumentField, len(idp.fields))
for i, f := range idp.fields {
t := aws.ToString(f.Type.Text)
fieldType := IdentityDocumentFieldTypeOther
if t != "" {
fieldType = IdentityDocumentFieldType(t)
}
field := &IdentityDocumentField{
fieldType: fieldType,
value: aws.ToString(f.ValueDetection.Text),
confidence: float64(aws.ToFloat32(f.ValueDetection.Confidence)),
raw: f,
}
if f.ValueDetection.NormalizedValue != nil {
field.normalizedValue = &NormalizedIdentityDocumentFieldValue{
valueType: f.ValueDetection.NormalizedValue.ValueType,
value: aws.ToString(f.ValueDetection.NormalizedValue.Value),
}
}
fields[i] = field
fieldsMap[fieldType] = field
}
return fields, fieldsMap
}