Skip to content

Commit

Permalink
Fix field order to preserve service side field ordering (#13147)
Browse files Browse the repository at this point in the history
  • Loading branch information
samvaity authored Jul 14, 2020
1 parent 511309d commit 653763e
Show file tree
Hide file tree
Showing 3 changed files with 10 additions and 5 deletions.
2 changes: 2 additions & 0 deletions sdk/formrecognizer/azure-ai-formrecognizer/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@

## 1.0.0-beta.5 (Unreleased)

### Key Bug Fixes
- Fixed `getFields()` to preserve service side ordering of fields.

## 1.0.0-beta.4 (2020-07-07)
### Breaking Changes
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.Collections;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;
Expand Down Expand Up @@ -199,7 +200,7 @@ static List<FormLine> getReadResultFormLines(ReadResult readResultItem) {
*/
private static Map<String, FormField<?>> getUnlabeledFieldMap(DocumentResult documentResultItem,
List<ReadResult> readResults, boolean includeFieldElements) {
Map<String, FormField<?>> extractedFieldMap = new TreeMap<>();
Map<String, FormField<?>> extractedFieldMap = new LinkedHashMap<>();
// add receipt fields
if (!CoreUtils.isNullOrEmpty(documentResultItem.getFields())) {
documentResultItem.getFields().forEach((key, fieldValue) -> {
Expand Down Expand Up @@ -367,7 +368,7 @@ private static FormPage getFormPage(ReadResult readResultItem, List<FormTable> p
private static Map<String, FormField<?>> getLabeledFieldMap(boolean includeFieldElements,
List<ReadResult> readResults,
PageResult pageResultItem, Integer pageNumber) {
Map<String, FormField<?>> formFieldMap = new TreeMap<>();
Map<String, FormField<?>> formFieldMap = new LinkedHashMap<>();
List<KeyValuePair> keyValuePairs = pageResultItem.getKeyValuePairs();
forEachWithIndex(keyValuePairs, ((index, keyValuePair) -> {
List<FormElement> formKeyContentList = null;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -696,9 +696,10 @@ void beginTrainingMultipageRunner(Consumer<String> testRunner) {
private void validateUnLabeledResult(RecognizedForm actualForm, boolean includeFieldElements,
List<ReadResult> readResults, PageResult expectedPage) {
validatePageRangeData(expectedPage.getPage(), actualForm.getFormPageRange());
for (int i = 0; i < expectedPage.getKeyValuePairs().size(); i++) {
final KeyValuePair expectedFormField = expectedPage.getKeyValuePairs().get(i);
final FormField<?> actualFormField = actualForm.getFields().get("field-" + i);
int i = 0;
for (Map.Entry<String, FormField<?>> entry : actualForm.getFields().entrySet()) {
FormField<?> actualFormField = entry.getValue();
final KeyValuePair expectedFormField = expectedPage.getKeyValuePairs().get(i++);
assertEquals(expectedFormField.getConfidence(), actualFormField.getConfidence());
assertEquals(expectedFormField.getKey().getText(), actualFormField.getLabelData().getText());
validateBoundingBoxData(expectedFormField.getKey().getBoundingBox(),
Expand All @@ -720,6 +721,7 @@ private void validateLabeledData(RecognizedForm actualForm, boolean includeField

assertEquals(documentResult.getPageRange().get(0), actualForm.getFormPageRange().getFirstPageNumber());
assertEquals(documentResult.getPageRange().get(1), actualForm.getFormPageRange().getLastPageNumber());
assertEquals(documentResult.getFields().keySet(), actualForm.getFields().keySet());
documentResult.getFields().forEach((label, expectedFieldValue) -> {
final FormField<?> actualFormField = actualForm.getFields().get(label);
assertEquals(label, actualFormField.getName());
Expand Down

0 comments on commit 653763e

Please sign in to comment.