Azure / azure-sdk

This is the Azure SDK parent repository and mostly contains documentation around guidelines and policies as well as the releases for the various languages supported by the Azure SDK.
http://azure.github.io/azure-sdk
MIT License
472 stars 291 forks source link

Board Review: FormRecognizer #962

Closed ctstone closed 4 years ago

ctstone commented 4 years ago

The Basics

About this client library

Artifacts required (per language)

We use an API review tool (apiview) to support .NET and Java API reviews. For Python and TypeScript, use the API extractor tool, then submit the output as a Draft PR to the relevant repository (azure-sdk-for-python or azure-sdk-for-js).

.NET

Java

WIP, sharing result of autorest v3: https://github.com/christopherlu0101/azure-sdk-for-java/tree/falu/fr2sdk-java/sdk/formrecognizer

Python

WIP, not ready for PR, but sharing here as a preview: https://github.com/ctstone/azure-sdk-for-python/tree/form-recognizer-v2.0-GA/sdk/cognitiveservices/azure-cognitiveservices-formrecognizer

TypeScript

Not started

Champion Scenarios

A champion scenario is a use case that the consumer of the client library is commonly expected to perform. Champion scenarios are used to ensure the developer experience is exemplary for the common cases. You need to show the entire code sample (including error handling, as an example) for the champion scenarios.

The prebuilt Analyze operations share the same API surface as custom Analyze.

Agenda for the review

A board review is generally split into two parts, with additional meetings as required

Part 1 - Introducing the board to the service:

After part 1, you may schedule additional meetings with architects to refine the API and work on implementation.

Part 2 - the "GA" meeting

Thank you for your submission

adrianhall commented 4 years ago

Scheduled for 1/30/2020

adrianhall commented 4 years ago

Notes from API Review Board:

Link to recording (MSFT INTERNAL): https://msit.microsoftstream.com/video/c5163ca9-9adf-4674-a738-dd1d04ffe5ac

Initial Notes:

Maybe do an experiment where we release separate libraries (business level vs. lower-level)

[ ] TODO: @annelo-msft and @KrzysztofCwalina will help design higher-level API (split or not) [ ] TODO: We need to get on the same page for versioning of the library. [ ] TODO: Align guidance for long running operations to operations, aligned with REST API guidelines

annelo-msft commented 4 years ago

The Basics

About this client library

Artifacts required (per language)

We use an API review tool (apiview) to support .NET and Java API reviews. For Python and TypeScript, use the API extractor tool, then submit the output as a Draft PR to the relevant repository (azure-sdk-for-python or azure-sdk-for-js).

.NET

Python

Champion Scenarios

A champion scenario is a use case that the consumer of the client library is commonly expected to perform. Champion scenarios are used to ensure the developer experience is exemplary for the common cases. You need to show the entire code sample (including error handling, as an example) for the champion scenarios.

Recognize and extract field values from custom forms

Recognize and extract field values from US Receipts

Recognize and extract OCR Content and Tables from Forms

Train a model from custom forms

Manage custom models

Agenda for the review

A board review is generally split into two parts, with additional meetings as required

Part 1 - Introducing the board to the service:

After part 1, you may schedule additional meetings with architects to refine the API and work on implementation.

Part 2 - the "GA" meeting

Thank you for your submission

kyle-patterson commented 4 years ago

Scheduled for 4/30

kyle-patterson commented 4 years ago

Link to recording (MSFT INTERNAL): https://msit.microsoftstream.com/video/dd4ba1ff-0400-96d1-ebd7-f1ea8fed4db1

.NET Data Samples

Q: Why is form field and form page on the same level?

Q: Is there a risk of a large number of extension methods to identify receipt locales?

Q: Is ReceiptLocale the best first name/concept, if there are different structures of receipts within locales? Could this be generalized outside of locale?

FOLLOW-UP: Consider how new receipt types with strongly-typed fields would be added to the API

Q: Could useTrainingLabels be made a required field, rather than optional with default:false?

Concern: Having two clients in the Client->TrainingClient is a strange way of addressing discoverability problem of training. Could the direction be flipped such that the training client flows into a client?

Management Operations

Q: For management APIs "LastModified" is actually "LastUpdated" in the swagger

Copy operations

Q: A scenario is two different entities with no keys to resource/subscription/credentials of the other entities. How is copy covered out-of-band in this case?

ApiView

Q: Is there a model versioning, ie can clientv2 call modelv3?

FOLLOW-UP on incorporating classification of recognized model into the model/submodel name

Python Data Samples

Overall, largely similar in both usage and concerns as .NET review.

Differentiation: No AsUSReceipt extension; instead, determined by receiptlocale that's passed in to the client functions

Q: How much variation is expected in a receipt based on locale?

Q: Is there a scenario where the customer doesn't know the locale of the receipt?

NOTE: In samples, include retrieving the confidence