-
Notifications
You must be signed in to change notification settings - Fork 396
/
TextRecognitionActivity.java
230 lines (209 loc) · 10.9 KB
/
TextRecognitionActivity.java
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
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
package com.google.firebase.example.mlkit;
import android.graphics.Point;
import android.graphics.Rect;
import android.os.Bundle;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import com.google.android.gms.tasks.OnFailureListener;
import com.google.android.gms.tasks.OnSuccessListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.ml.vision.FirebaseVision;
import com.google.firebase.ml.vision.common.FirebaseVisionImage;
import com.google.firebase.ml.vision.common.FirebaseVisionImageMetadata;
import com.google.firebase.ml.vision.document.FirebaseVisionCloudDocumentRecognizerOptions;
import com.google.firebase.ml.vision.document.FirebaseVisionDocumentText;
import com.google.firebase.ml.vision.document.FirebaseVisionDocumentTextRecognizer;
import com.google.firebase.ml.vision.text.FirebaseVisionCloudTextRecognizerOptions;
import com.google.firebase.ml.vision.text.FirebaseVisionText;
import com.google.firebase.ml.vision.text.FirebaseVisionTextRecognizer;
import com.google.firebase.ml.vision.text.RecognizedLanguage;
import java.util.Arrays;
import java.util.List;
public class TextRecognitionActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
private void recognizeText(FirebaseVisionImage image) {
// [START get_detector_default]
FirebaseVisionTextRecognizer detector = FirebaseVision.getInstance()
.getOnDeviceTextRecognizer();
// [END get_detector_default]
// [START fml_run_detector]
Task<FirebaseVisionText> result =
detector.processImage(image)
.addOnSuccessListener(new OnSuccessListener<FirebaseVisionText>() {
@Override
public void onSuccess(FirebaseVisionText firebaseVisionText) {
// Task completed successfully
// [START_EXCLUDE]
// [START get_text]
for (FirebaseVisionText.TextBlock block : firebaseVisionText.getTextBlocks()) {
Rect boundingBox = block.getBoundingBox();
Point[] cornerPoints = block.getCornerPoints();
String text = block.getText();
for (FirebaseVisionText.Line line: block.getLines()) {
// ...
for (FirebaseVisionText.Element element: line.getElements()) {
// ...
}
}
}
// [END get_text]
// [END_EXCLUDE]
}
})
.addOnFailureListener(
new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
// Task failed with an exception
// ...
}
});
// [END fml_run_detector]
}
private void recognizeTextCloud(FirebaseVisionImage image) {
// [START set_detector_options_cloud]
FirebaseVisionCloudTextRecognizerOptions options = new FirebaseVisionCloudTextRecognizerOptions.Builder()
.setLanguageHints(Arrays.asList("en", "hi"))
.build();
// [END set_detector_options_cloud]
// [START get_detector_cloud]
FirebaseVisionTextRecognizer detector = FirebaseVision.getInstance()
.getCloudTextRecognizer();
// Or, to change the default settings:
// FirebaseVisionTextRecognizer detector = FirebaseVision.getInstance()
// .getCloudTextRecognizer(options);
// [END get_detector_cloud]
// [START fml_run_detector_cloud]
Task<FirebaseVisionText> result = detector.processImage(image)
.addOnSuccessListener(new OnSuccessListener<FirebaseVisionText>() {
@Override
public void onSuccess(FirebaseVisionText result) {
// Task completed successfully
// [START_EXCLUDE]
// [START get_text_cloud]
for (FirebaseVisionText.TextBlock block : result.getTextBlocks()) {
Rect boundingBox = block.getBoundingBox();
Point[] cornerPoints = block.getCornerPoints();
String text = block.getText();
for (FirebaseVisionText.Line line: block.getLines()) {
// ...
for (FirebaseVisionText.Element element: line.getElements()) {
// ...
}
}
}
// [END get_text_cloud]
// [END_EXCLUDE]
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
// Task failed with an exception
// ...
}
});
// [END fml_run_detector_cloud]
}
private void processTextBlock(FirebaseVisionText result) {
// [START mlkit_process_text_block]
String resultText = result.getText();
for (FirebaseVisionText.TextBlock block: result.getTextBlocks()) {
String blockText = block.getText();
Float blockConfidence = block.getConfidence();
List<RecognizedLanguage> blockLanguages = block.getRecognizedLanguages();
Point[] blockCornerPoints = block.getCornerPoints();
Rect blockFrame = block.getBoundingBox();
for (FirebaseVisionText.Line line: block.getLines()) {
String lineText = line.getText();
Float lineConfidence = line.getConfidence();
List<RecognizedLanguage> lineLanguages = line.getRecognizedLanguages();
Point[] lineCornerPoints = line.getCornerPoints();
Rect lineFrame = line.getBoundingBox();
for (FirebaseVisionText.Element element: line.getElements()) {
String elementText = element.getText();
Float elementConfidence = element.getConfidence();
List<RecognizedLanguage> elementLanguages = element.getRecognizedLanguages();
Point[] elementCornerPoints = element.getCornerPoints();
Rect elementFrame = element.getBoundingBox();
}
}
}
// [END mlkit_process_text_block]
}
private FirebaseVisionDocumentTextRecognizer getLocalDocumentRecognizer() {
// [START mlkit_local_doc_recognizer]
FirebaseVisionDocumentTextRecognizer detector = FirebaseVision.getInstance()
.getCloudDocumentTextRecognizer();
// [END mlkit_local_doc_recognizer]
return detector;
}
private FirebaseVisionDocumentTextRecognizer getCloudDocumentRecognizer() {
// [START mlkit_cloud_doc_recognizer]
// Or, to provide language hints to assist with language detection:
// See https://cloud.google.com/vision/docs/languages for supported languages
FirebaseVisionCloudDocumentRecognizerOptions options =
new FirebaseVisionCloudDocumentRecognizerOptions.Builder()
.setLanguageHints(Arrays.asList("en", "hi"))
.build();
FirebaseVisionDocumentTextRecognizer detector = FirebaseVision.getInstance()
.getCloudDocumentTextRecognizer(options);
// [END mlkit_cloud_doc_recognizer]
return detector;
}
private void processDocumentImage() {
// Dummy variables
FirebaseVisionDocumentTextRecognizer detector = getLocalDocumentRecognizer();
FirebaseVisionImage myImage = FirebaseVisionImage.fromByteArray(new byte[]{},
new FirebaseVisionImageMetadata.Builder().build());
// [START mlkit_process_doc_image]
detector.processImage(myImage)
.addOnSuccessListener(new OnSuccessListener<FirebaseVisionDocumentText>() {
@Override
public void onSuccess(FirebaseVisionDocumentText result) {
// Task completed successfully
// ...
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
// Task failed with an exception
// ...
}
});
// [END mlkit_process_doc_image]
}
private void processDocumentTextBlock(FirebaseVisionDocumentText result) {
// [START mlkit_process_document_text_block]
String resultText = result.getText();
for (FirebaseVisionDocumentText.Block block: result.getBlocks()) {
String blockText = block.getText();
Float blockConfidence = block.getConfidence();
List<RecognizedLanguage> blockRecognizedLanguages = block.getRecognizedLanguages();
Rect blockFrame = block.getBoundingBox();
for (FirebaseVisionDocumentText.Paragraph paragraph: block.getParagraphs()) {
String paragraphText = paragraph.getText();
Float paragraphConfidence = paragraph.getConfidence();
List<RecognizedLanguage> paragraphRecognizedLanguages = paragraph.getRecognizedLanguages();
Rect paragraphFrame = paragraph.getBoundingBox();
for (FirebaseVisionDocumentText.Word word: paragraph.getWords()) {
String wordText = word.getText();
Float wordConfidence = word.getConfidence();
List<RecognizedLanguage> wordRecognizedLanguages = word.getRecognizedLanguages();
Rect wordFrame = word.getBoundingBox();
for (FirebaseVisionDocumentText.Symbol symbol: word.getSymbols()) {
String symbolText = symbol.getText();
Float symbolConfidence = symbol.getConfidence();
List<RecognizedLanguage> symbolRecognizedLanguages = symbol.getRecognizedLanguages();
Rect symbolFrame = symbol.getBoundingBox();
}
}
}
}
// [END mlkit_process_document_text_block]
}
}