From f0fbeaa3205a3dad81e071d8f469961a7bd0c95b Mon Sep 17 00:00:00 2001 From: "Sheng, Lichang" Date: Wed, 17 Jan 2024 10:01:47 +0000 Subject: [PATCH] OCR api 20240111 v2 Reviewed-by: Pruthi, Vineet Co-authored-by: Sheng, Lichang Co-committed-by: Sheng, Lichang --- docs/ocr/api-ref/ALL_META.TXT.json | 365 +++++++++++++ docs/ocr/api-ref/CLASS.TXT.json | 182 ++++++ docs/ocr/api-ref/PARAMETERS.txt | 3 + .../api-ref/en-us_image_0000001704007332.gif | Bin 0 -> 29752 bytes .../api-ref/en-us_image_0000001744559845.png | Bin 0 -> 42231 bytes .../api-ref/en-us_image_0000001750904201.png | Bin 0 -> 37950 bytes docs/ocr/api-ref/ocr_03_0001.html | 17 + docs/ocr/api-ref/ocr_03_0002.html | 159 ++++++ docs/ocr/api-ref/ocr_03_0005.html | 41 ++ docs/ocr/api-ref/ocr_03_0006.html | 104 ++++ docs/ocr/api-ref/ocr_03_0014.html | 13 + docs/ocr/api-ref/ocr_03_0028.html | 384 +++++++++++++ docs/ocr/api-ref/ocr_03_0029.html | 20 + docs/ocr/api-ref/ocr_03_0031.html | 517 ++++++++++++++++++ docs/ocr/api-ref/ocr_03_0042.html | 405 ++++++++++++++ docs/ocr/api-ref/ocr_03_0043.html | 12 + docs/ocr/api-ref/ocr_03_0046.html | 13 + docs/ocr/api-ref/ocr_03_0047.html | 26 + docs/ocr/api-ref/ocr_03_0048.html | 15 + docs/ocr/api-ref/ocr_03_0060.html | 19 + docs/ocr/api-ref/ocr_03_0061.html | 11 + docs/ocr/api-ref/ocr_03_0062.html | 11 + docs/ocr/api-ref/ocr_03_0063.html | 14 + docs/ocr/api-ref/ocr_03_0064.html | 26 + docs/ocr/api-ref/ocr_03_0090.html | 329 +++++++++++ docs/ocr/api-ref/ocr_03_0130.html | 49 ++ .../caution_3.0-en-us.png | Bin 0 -> 2752 bytes .../public_sys-resources/danger_3.0-en-us.png | Bin 0 -> 2771 bytes .../api-ref/public_sys-resources/delta.gif | Bin 0 -> 836 bytes .../api-ref/public_sys-resources/deltaend.gif | Bin 0 -> 834 bytes .../public_sys-resources/icon-arrowdn.gif | Bin 0 -> 1887 bytes .../public_sys-resources/icon-arrowrt.gif | Bin 0 -> 1890 bytes .../public_sys-resources/icon-caution.gif | Bin 0 -> 1086 bytes .../public_sys-resources/icon-danger.gif | Bin 0 -> 1086 bytes .../public_sys-resources/icon-huawei.gif | Bin 0 -> 2767 bytes .../public_sys-resources/icon-note.gif | Bin 0 -> 983 bytes .../public_sys-resources/icon-notice.gif | Bin 0 -> 962 bytes .../api-ref/public_sys-resources/icon-tip.gif | Bin 0 -> 879 bytes .../public_sys-resources/icon-warning.gif | Bin 0 -> 1086 bytes .../public_sys-resources/imageclose.gif | Bin 0 -> 1238 bytes .../public_sys-resources/imageclosehover.gif | Bin 0 -> 1172 bytes .../api-ref/public_sys-resources/imagemax.gif | Bin 0 -> 1267 bytes .../public_sys-resources/imagemaxhover.gif | Bin 0 -> 1199 bytes .../public_sys-resources/macFFBgHack.png | Bin 0 -> 1014 bytes .../public_sys-resources/note_3.0-en-us.png | Bin 0 -> 1080 bytes .../public_sys-resources/notice_3.0-en-us.png | Bin 0 -> 1672 bytes .../warning_3.0-en-us.png | Bin 0 -> 3164 bytes 47 files changed, 2735 insertions(+) create mode 100644 docs/ocr/api-ref/ALL_META.TXT.json create mode 100644 docs/ocr/api-ref/CLASS.TXT.json create mode 100644 docs/ocr/api-ref/PARAMETERS.txt create mode 100644 docs/ocr/api-ref/en-us_image_0000001704007332.gif create mode 100644 docs/ocr/api-ref/en-us_image_0000001744559845.png create mode 100644 docs/ocr/api-ref/en-us_image_0000001750904201.png create mode 100644 docs/ocr/api-ref/ocr_03_0001.html create mode 100644 docs/ocr/api-ref/ocr_03_0002.html create mode 100644 docs/ocr/api-ref/ocr_03_0005.html create mode 100644 docs/ocr/api-ref/ocr_03_0006.html create mode 100644 docs/ocr/api-ref/ocr_03_0014.html create mode 100644 docs/ocr/api-ref/ocr_03_0028.html create mode 100644 docs/ocr/api-ref/ocr_03_0029.html create mode 100644 docs/ocr/api-ref/ocr_03_0031.html create mode 100644 docs/ocr/api-ref/ocr_03_0042.html create mode 100644 docs/ocr/api-ref/ocr_03_0043.html create mode 100644 docs/ocr/api-ref/ocr_03_0046.html create mode 100644 docs/ocr/api-ref/ocr_03_0047.html create mode 100644 docs/ocr/api-ref/ocr_03_0048.html create mode 100644 docs/ocr/api-ref/ocr_03_0060.html create mode 100644 docs/ocr/api-ref/ocr_03_0061.html create mode 100644 docs/ocr/api-ref/ocr_03_0062.html create mode 100644 docs/ocr/api-ref/ocr_03_0063.html create mode 100644 docs/ocr/api-ref/ocr_03_0064.html create mode 100644 docs/ocr/api-ref/ocr_03_0090.html create mode 100644 docs/ocr/api-ref/ocr_03_0130.html create mode 100644 docs/ocr/api-ref/public_sys-resources/caution_3.0-en-us.png create mode 100644 docs/ocr/api-ref/public_sys-resources/danger_3.0-en-us.png create mode 100644 docs/ocr/api-ref/public_sys-resources/delta.gif create mode 100644 docs/ocr/api-ref/public_sys-resources/deltaend.gif create mode 100644 docs/ocr/api-ref/public_sys-resources/icon-arrowdn.gif create mode 100644 docs/ocr/api-ref/public_sys-resources/icon-arrowrt.gif create mode 100644 docs/ocr/api-ref/public_sys-resources/icon-caution.gif create mode 100644 docs/ocr/api-ref/public_sys-resources/icon-danger.gif create mode 100644 docs/ocr/api-ref/public_sys-resources/icon-huawei.gif create mode 100644 docs/ocr/api-ref/public_sys-resources/icon-note.gif create mode 100644 docs/ocr/api-ref/public_sys-resources/icon-notice.gif create mode 100644 docs/ocr/api-ref/public_sys-resources/icon-tip.gif create mode 100644 docs/ocr/api-ref/public_sys-resources/icon-warning.gif create mode 100644 docs/ocr/api-ref/public_sys-resources/imageclose.gif create mode 100644 docs/ocr/api-ref/public_sys-resources/imageclosehover.gif create mode 100644 docs/ocr/api-ref/public_sys-resources/imagemax.gif create mode 100644 docs/ocr/api-ref/public_sys-resources/imagemaxhover.gif create mode 100644 docs/ocr/api-ref/public_sys-resources/macFFBgHack.png create mode 100644 docs/ocr/api-ref/public_sys-resources/note_3.0-en-us.png create mode 100644 docs/ocr/api-ref/public_sys-resources/notice_3.0-en-us.png create mode 100644 docs/ocr/api-ref/public_sys-resources/warning_3.0-en-us.png diff --git a/docs/ocr/api-ref/ALL_META.TXT.json b/docs/ocr/api-ref/ALL_META.TXT.json new file mode 100644 index 00000000..dee60c76 --- /dev/null +++ b/docs/ocr/api-ref/ALL_META.TXT.json @@ -0,0 +1,365 @@ +[ + { + "dockw":"API Reference" + }, + { + "uri":"ocr_03_0060.html", + "node_id":"ocr_03_0060.xml", + "product_code":"ocr", + "code":"1", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"Before You Start", + "search_title":"", + "metedata":[ + { + "documenttype":"api", + "prodname":"ocr" + } + ], + "title":"Before You Start", + "githuburl":"" + }, + { + "uri":"ocr_03_0046.html", + "node_id":"ocr_03_0046.xml", + "product_code":"ocr", + "code":"2", + "des":"Optical Character Recognition (OCR) detects and extracts text from images and converts the text into an editable JSON format.OCR is provided to you through open APIs. You", + "doc_type":"api", + "kw":"Overview,Before You Start,API Reference", + "search_title":"", + "metedata":[ + { + "documenttype":"api", + "prodname":"ocr" + } + ], + "title":"Overview", + "githuburl":"" + }, + { + "uri":"ocr_03_0061.html", + "node_id":"ocr_03_0061.xml", + "product_code":"ocr", + "code":"3", + "des":"OCR offers REST APIs that support HTTPS requests. For information on how to call an API, see API Calling.", + "doc_type":"api", + "kw":"API Calling,Before You Start,API Reference", + "search_title":"", + "metedata":[ + { + "documenttype":"api", + "prodname":"ocr" + } + ], + "title":"API Calling", + "githuburl":"" + }, + { + "uri":"ocr_03_0062.html", + "node_id":"ocr_03_0062.xml", + "product_code":"ocr", + "code":"4", + "des":"An endpoint is the request address used to call an API. Different services have different endpoints for different regions. You can query all service endpoints at Regions ", + "doc_type":"api", + "kw":"Endpoint,Before You Start,API Reference", + "search_title":"", + "metedata":[ + { + "documenttype":"api", + "prodname":"ocr" + } + ], + "title":"Endpoint", + "githuburl":"" + }, + { + "uri":"ocr_03_0063.html", + "node_id":"ocr_03_0063.xml", + "product_code":"ocr", + "code":"5", + "des":"Only images in PNG, JPG, JPEG, BMP, or TIFF format can be recognized.No side of the image can be smaller than 15 or larger than 8,192 pixels.The area to be recognized mus", + "doc_type":"api", + "kw":"Constraints and Limitations,Before You Start,API Reference", + "search_title":"", + "metedata":[ + { + "documenttype":"api", + "prodname":"ocr" + } + ], + "title":"Constraints and Limitations", + "githuburl":"" + }, + { + "uri":"ocr_03_0064.html", + "node_id":"ocr_03_0064.xml", + "product_code":"ocr", + "code":"6", + "des":"AccountAn account refers to the username created during user registration and has complete access to all resources and cloud services. It can reset user passwords and ass", + "doc_type":"api", + "kw":"Basic Concepts,Before You Start,API Reference", + "search_title":"", + "metedata":[ + { + "documenttype":"api", + "prodname":"ocr" + } + ], + "title":"Basic Concepts", + "githuburl":"" + }, + { + "uri":"ocr_03_0047.html", + "node_id":"ocr_03_0047.xml", + "product_code":"ocr", + "code":"7", + "des":"All OCR APIs are proprietary. By calling such APIs, you can use the OCR functions described in Table 1.", + "doc_type":"api", + "kw":"API Overview,API Reference", + "search_title":"", + "metedata":[ + { + "documenttype":"api", + "prodname":"ocr" + } + ], + "title":"API Overview", + "githuburl":"" + }, + { + "uri":"ocr_03_0001.html", + "node_id":"ocr_03_0001.xml", + "product_code":"ocr", + "code":"8", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"API Calling", + "search_title":"", + "metedata":[ + { + "documenttype":"api", + "prodname":"ocr" + } + ], + "title":"API Calling", + "githuburl":"" + }, + { + "uri":"ocr_03_0043.html", + "node_id":"ocr_03_0043.xml", + "product_code":"ocr", + "code":"9", + "des":"Log in to the OCR management console.Select a region based on your business needs. For details about the regions where services are deployed, see Regions and Endpoints.Se", + "doc_type":"api", + "kw":"Subscribing to an OCR Service,API Calling,API Reference", + "search_title":"", + "metedata":[ + { + "documenttype":"api", + "prodname":"ocr" + } + ], + "title":"Subscribing to an OCR Service", + "githuburl":"" + }, + { + "uri":"ocr_03_0002.html", + "node_id":"ocr_03_0002.xml", + "product_code":"ocr", + "code":"10", + "des":"This section describes the structure of a REST API request, and uses the API for obtaining a user token as an example to demonstrate how to call an API. The obtained toke", + "doc_type":"api", + "kw":"Making an API Request,API Calling,API Reference", + "search_title":"", + "metedata":[ + { + "documenttype":"api", + "prodname":"ocr" + } + ], + "title":"Making an API Request", + "githuburl":"" + }, + { + "uri":"ocr_03_0005.html", + "node_id":"ocr_03_0005.xml", + "product_code":"ocr", + "code":"11", + "des":"A token is valid for 24 hours. When using a token for authentication, cache it to prevent frequently calling the IAM API.A token is used to acquire temporary permissions.", + "doc_type":"api", + "kw":"Authentication,API Calling,API Reference", + "search_title":"", + "metedata":[ + { + "documenttype":"api", + "prodname":"ocr" + } + ], + "title":"Authentication", + "githuburl":"" + }, + { + "uri":"ocr_03_0006.html", + "node_id":"ocr_03_0006.xml", + "product_code":"ocr", + "code":"12", + "des":"After sending a request, you will receive a response, including a status code, response header, and response body.A status code is a group of digits, ranging from 1xx to ", + "doc_type":"api", + "kw":"Response,API Calling,API Reference", + "search_title":"", + "metedata":[ + { + "documenttype":"api", + "prodname":"ocr" + } + ], + "title":"Response", + "githuburl":"" + }, + { + "uri":"ocr_03_0014.html", + "node_id":"ocr_03_0014.xml", + "product_code":"ocr", + "code":"13", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"API", + "search_title":"", + "metedata":[ + { + "documenttype":"api", + "prodname":"ocr" + } + ], + "title":"API", + "githuburl":"" + }, + { + "uri":"ocr_03_0042.html", + "node_id":"ocr_03_0042.xml", + "product_code":"ocr", + "code":"14", + "des":"This API detects and extracts text from images and converts the text and coordinates into JSON format. It can be used in various scenarios, such as scanned documents, ele", + "doc_type":"api", + "kw":"General Text,API,API Reference", + "search_title":"", + "metedata":[ + { + "documenttype":"api", + "prodname":"ocr" + } + ], + "title":"General Text", + "githuburl":"" + }, + { + "uri":"ocr_03_0031.html", + "node_id":"ocr_03_0031.xml", + "product_code":"ocr", + "code":"15", + "des":"This API detects and extracts text from table images and converts the text into JSON format. The returned results include two types of image area (words_region): text are", + "doc_type":"api", + "kw":"General Table,API,API Reference", + "search_title":"", + "metedata":[ + { + "documenttype":"api", + "prodname":"ocr" + } + ], + "title":"General Table", + "githuburl":"" + }, + { + "uri":"ocr_03_0048.html", + "node_id":"ocr_03_0048.xml", + "product_code":"ocr", + "code":"16", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"Common Parameters", + "search_title":"", + "metedata":[ + { + "documenttype":"api", + "prodname":"ocr" + } + ], + "title":"Common Parameters", + "githuburl":"" + }, + { + "uri":"ocr_03_0090.html", + "node_id":"ocr_03_0090.xml", + "product_code":"ocr", + "code":"17", + "des":"An HTTP status code consists of three digits, which is classified into five categories: 1xx: related information; 2xx: operation successful; 3xx: redirection; 4xx: client", + "doc_type":"api", + "kw":"Status Codes,Common Parameters,API Reference", + "search_title":"", + "metedata":[ + { + "documenttype":"api", + "prodname":"ocr" + } + ], + "title":"Status Codes", + "githuburl":"" + }, + { + "uri":"ocr_03_0028.html", + "node_id":"ocr_03_0028.xml", + "product_code":"ocr", + "code":"18", + "des":"No data will be returned if an API fails to be called. You can locate the error cause based on the error code of each API. When an API call fails, HTTPS status code 4xx o", + "doc_type":"api", + "kw":"Error Codes,Common Parameters,API Reference", + "search_title":"", + "metedata":[ + { + "documenttype":"api", + "prodname":"ocr" + } + ], + "title":"Error Codes", + "githuburl":"" + }, + { + "uri":"ocr_03_0130.html", + "node_id":"ocr_03_0130.xml", + "product_code":"ocr", + "code":"19", + "des":"A project ID or project name is required in some API requests. You need to obtain the project ID and name before calling an API.Log in to the management console.In the up", + "doc_type":"api", + "kw":"Obtaining the Project ID,Common Parameters,API Reference", + "search_title":"", + "metedata":[ + { + "documenttype":"api", + "prodname":"ocr" + } + ], + "title":"Obtaining the Project ID", + "githuburl":"" + }, + { + "uri":"ocr_03_0029.html", + "node_id":"ocr_03_0029.xml", + "product_code":"ocr", + "code":"20", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"Change History,API Reference", + "search_title":"", + "metedata":[ + { + "documenttype":"api", + "prodname":"ocr" + } + ], + "title":"Change History", + "githuburl":"" + } +] \ No newline at end of file diff --git a/docs/ocr/api-ref/CLASS.TXT.json b/docs/ocr/api-ref/CLASS.TXT.json new file mode 100644 index 00000000..19e30760 --- /dev/null +++ b/docs/ocr/api-ref/CLASS.TXT.json @@ -0,0 +1,182 @@ +[ + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"ocr", + "title":"Before You Start", + "uri":"ocr_03_0060.html", + "doc_type":"api", + "p_code":"", + "code":"1" + }, + { + "desc":"Optical Character Recognition (OCR) detects and extracts text from images and converts the text into an editable JSON format.OCR is provided to you through open APIs. You", + "product_code":"ocr", + "title":"Overview", + "uri":"ocr_03_0046.html", + "doc_type":"api", + "p_code":"1", + "code":"2" + }, + { + "desc":"OCR offers REST APIs that support HTTPS requests. For information on how to call an API, see API Calling.", + "product_code":"ocr", + "title":"API Calling", + "uri":"ocr_03_0061.html", + "doc_type":"api", + "p_code":"1", + "code":"3" + }, + { + "desc":"An endpoint is the request address used to call an API. Different services have different endpoints for different regions. You can query all service endpoints at Regions ", + "product_code":"ocr", + "title":"Endpoint", + "uri":"ocr_03_0062.html", + "doc_type":"api", + "p_code":"1", + "code":"4" + }, + { + "desc":"Only images in PNG, JPG, JPEG, BMP, or TIFF format can be recognized.No side of the image can be smaller than 15 or larger than 8,192 pixels.The area to be recognized mus", + "product_code":"ocr", + "title":"Constraints and Limitations", + "uri":"ocr_03_0063.html", + "doc_type":"api", + "p_code":"1", + "code":"5" + }, + { + "desc":"AccountAn account refers to the username created during user registration and has complete access to all resources and cloud services. It can reset user passwords and ass", + "product_code":"ocr", + "title":"Basic Concepts", + "uri":"ocr_03_0064.html", + "doc_type":"api", + "p_code":"1", + "code":"6" + }, + { + "desc":"All OCR APIs are proprietary. By calling such APIs, you can use the OCR functions described in Table 1.", + "product_code":"ocr", + "title":"API Overview", + "uri":"ocr_03_0047.html", + "doc_type":"api", + "p_code":"", + "code":"7" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"ocr", + "title":"API Calling", + "uri":"ocr_03_0001.html", + "doc_type":"api", + "p_code":"", + "code":"8" + }, + { + "desc":"Log in to the OCR management console.Select a region based on your business needs. For details about the regions where services are deployed, see Regions and Endpoints.Se", + "product_code":"ocr", + "title":"Subscribing to an OCR Service", + "uri":"ocr_03_0043.html", + "doc_type":"api", + "p_code":"8", + "code":"9" + }, + { + "desc":"This section describes the structure of a REST API request, and uses the API for obtaining a user token as an example to demonstrate how to call an API. The obtained toke", + "product_code":"ocr", + "title":"Making an API Request", + "uri":"ocr_03_0002.html", + "doc_type":"api", + "p_code":"8", + "code":"10" + }, + { + "desc":"A token is valid for 24 hours. When using a token for authentication, cache it to prevent frequently calling the IAM API.A token is used to acquire temporary permissions.", + "product_code":"ocr", + "title":"Authentication", + "uri":"ocr_03_0005.html", + "doc_type":"api", + "p_code":"8", + "code":"11" + }, + { + "desc":"After sending a request, you will receive a response, including a status code, response header, and response body.A status code is a group of digits, ranging from 1xx to ", + "product_code":"ocr", + "title":"Response", + "uri":"ocr_03_0006.html", + "doc_type":"api", + "p_code":"8", + "code":"12" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"ocr", + "title":"API", + "uri":"ocr_03_0014.html", + "doc_type":"api", + "p_code":"", + "code":"13" + }, + { + "desc":"This API detects and extracts text from images and converts the text and coordinates into JSON format. It can be used in various scenarios, such as scanned documents, ele", + "product_code":"ocr", + "title":"General Text", + "uri":"ocr_03_0042.html", + "doc_type":"api", + "p_code":"13", + "code":"14" + }, + { + "desc":"This API detects and extracts text from table images and converts the text into JSON format. The returned results include two types of image area (words_region): text are", + "product_code":"ocr", + "title":"General Table", + "uri":"ocr_03_0031.html", + "doc_type":"api", + "p_code":"13", + "code":"15" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"ocr", + "title":"Common Parameters", + "uri":"ocr_03_0048.html", + "doc_type":"api", + "p_code":"", + "code":"16" + }, + { + "desc":"An HTTP status code consists of three digits, which is classified into five categories: 1xx: related information; 2xx: operation successful; 3xx: redirection; 4xx: client", + "product_code":"ocr", + "title":"Status Codes", + "uri":"ocr_03_0090.html", + "doc_type":"api", + "p_code":"16", + "code":"17" + }, + { + "desc":"No data will be returned if an API fails to be called. You can locate the error cause based on the error code of each API. When an API call fails, HTTPS status code 4xx o", + "product_code":"ocr", + "title":"Error Codes", + "uri":"ocr_03_0028.html", + "doc_type":"api", + "p_code":"16", + "code":"18" + }, + { + "desc":"A project ID or project name is required in some API requests. You need to obtain the project ID and name before calling an API.Log in to the management console.In the up", + "product_code":"ocr", + "title":"Obtaining the Project ID", + "uri":"ocr_03_0130.html", + "doc_type":"api", + "p_code":"16", + "code":"19" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"ocr", + "title":"Change History", + "uri":"ocr_03_0029.html", + "doc_type":"api", + "p_code":"", + "code":"20" + } +] \ No newline at end of file diff --git a/docs/ocr/api-ref/PARAMETERS.txt b/docs/ocr/api-ref/PARAMETERS.txt new file mode 100644 index 00000000..6da8d5f0 --- /dev/null +++ b/docs/ocr/api-ref/PARAMETERS.txt @@ -0,0 +1,3 @@ +version="" +language="en-us" +type="" \ No newline at end of file diff --git a/docs/ocr/api-ref/en-us_image_0000001704007332.gif b/docs/ocr/api-ref/en-us_image_0000001704007332.gif new file mode 100644 index 0000000000000000000000000000000000000000..cfbc91a43614681240864aa0bc5484938d7db8f6 GIT binary patch literal 29752 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

MsdAc+3IvaDb`0+@{6{iKa+%bXzHOo7P%Q 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 &Jji!|#@?sr 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 h?H%RWsE!ThuKmN + +

API Calling

+
+ + diff --git a/docs/ocr/api-ref/ocr_03_0002.html b/docs/ocr/api-ref/ocr_03_0002.html new file mode 100644 index 00000000..d10df223 --- /dev/null +++ b/docs/ocr/api-ref/ocr_03_0002.html @@ -0,0 +1,159 @@ + + +

Making an API Request

+

This section describes the structure of a REST API request, and uses the API for obtaining a user token as an example to demonstrate how to call an API. The obtained token can then be used to authenticate the calling of other APIs.

+

Request URI

A request URI is in the following format:

+

{URI-scheme} :// {Endpoint} / {resource-path} ? {query-string}

+ +
+ + + + + + + + + + + + + + + + +
Table 1 Request URI

Parameter

+

Description

+

URI-scheme

+

Protocol used to transmit requests. All APIs use HTTPS.

+

Endpoint

+

Domain name or IP address of the server for the REST service endpoint. The endpoint varies depending on services in different regions. It can be obtained in Endpoint.

+

resource-path

+

Access path of an API. Obtain the path from the URI of an API. For example, the resource-path of the API for obtaining a user token is /v3/auth/tokens.

+

query-string

+

(Optional) Query parameter. Put a question mark (?) at the beginning. The format is Parameter name=Parameter value. For example, ? limit=10 indicates that a maximum of 10 data records will be displayed.

+
+
+

To simplify the URI display, each API is provided with only a resource-path and a request method. All API URI schemes are HTTPS and the endpoints are the same in the same region.

+
+
+

Request Method

HTTP defines the following request modes that can be used to send a request to the server:

+ +
+ + + + + + + + + + + + + + + + + + + + + + +
Table 2 HTTP methods

Method

+

Description

+

GET

+

Request the server to return a specific resource.

+

PUT

+

Request the server to update a specific resource.

+

POST

+

Request the server to create a new resource or perform a special operation.

+

DELETE

+

Request the server to delete a specific resource, such as an object.

+

HEAD

+

Request the server for the resource headers.

+

PATCH

+

Request the server to update a portion of the resource content.

+

PATCH may create a new resource if it does not exist.

+
+
+

For example, if you use the POST method to obtain the URI of a user token, the request is as follows:

+
POST https://{iam-endpoint}/v3/auth/tokens
+
+

Request Header

You can add additional fields, for example, the fields required by a specified URI or HTTP method, to a request header. For example, add Content-Type, which specifies the request body type, to a request for the authentication information.

+

Table 3 describes the common request header fields to be added to the request.

+ +
+ + + + + + + + + + + + + + + + +
Table 3 Common request headers

Header

+

Description

+

Mandatory

+

Example

+

Content-type

+

Message body type (format). The default value is application/json.

+

Yes

+

application/json

+

X-Auth-Token

+

User token

+

Response for calling the Obtaining a User Token API. This API is the only one that does not require authentication. After the request is processed, the value of X-Subject-Token in the response header (Header) is the token value.

+

Mandatory for token-based authentication

+

MIIPAgYJKoZIhvcNAQcCo...ggg1BBIINPXsidG9rZ

+
+
+

The API used to obtain a user token does not require authentication. Therefore, only the Content-Type field needs to be added to requests for calling the API. An example of such requests is as follows:

+
POST https://{iam-endpoint}/v3/auth/tokens 
+Content-Type: application/json
+
+

Request Body

The body of a request is often sent in a structured format (JSON or XML) as specified in the Content-Type header field. The request body transfers content except the request header.

+

For an API, the request parameters and parameter description are available in the request. The following provides an example request with a body included. Replace user_name, domain_name, ******** (login password), and xxxxxxxx (project ID) with the actual values. To learn how to obtain a project ID, see Obtaining the Project ID.

+

The scope parameter specifies where a token takes effect. In the example, the token takes effect only for the resources in a specified project. OCR uses a region-specific endpoint to call this API. Set scope to project. You can set scope to an account or a project under an account.

+
+
POST https://{iam-endpoint}/v3/auth/tokens  
+Content-Type:application/json 
+{ 
+  "auth": { 
+    "identity": { 
+      "methods": ["password"], 
+      "password": { 
+        "user": { 
+          "name": "user_name",  
+          "password": "********", 
+          "domain": { 
+            "name": "domain_name"   
+          } 
+        } 
+      } 
+    }, 
+    "scope": { 
+      "project": { 
+        "name": "xxxxxxxx"   
+      } 
+    } 
+  } 
+}
+

If all data required for the API request is available, you can send the request to call the API through curl, Postman, or coding. x-subject-token in the response header is the desired user token. This token can then be used to authenticate the calling of other APIs.

+
+
+
+ +
+ diff --git a/docs/ocr/api-ref/ocr_03_0005.html b/docs/ocr/api-ref/ocr_03_0005.html new file mode 100644 index 00000000..8191cada --- /dev/null +++ b/docs/ocr/api-ref/ocr_03_0005.html @@ -0,0 +1,41 @@ + + +

Authentication

+

Token-based Authentication

A token is valid for 24 hours. When using a token for authentication, cache it to prevent frequently calling the IAM API.

+
+

A token is used to acquire temporary permissions. During API authentication using a token, the token is added to a request to get permissions for calling the API.

+

To call an API to obtain a user token, you need to set auth.scope to project in the request body.

+
{ 
+    "auth": { 
+        "identity": { 
+            "methods": [ 
+                "password" 
+            ], 
+            "password": { 
+                "user": { 
+                    "name": "user_name", 
+                    "password": "********", 
+                    "domain": { 
+                        "name": "domain_name" 
+                    } 
+                } 
+            } 
+        }, 
+        "scope": { 
+            "project": { 
+                "name": "xxxxxxxx" 
+            } 
+        } 
+    } 
+}
+

After a token is obtained, the X-Auth-Token header must be added to requests to specify the token when calling other APIs. For example, if the token is ABCDEFJ...., add X-Auth-Token: ABCDEFJ.... to a request as follows:

+
Content-Type: application/json 
+X-Auth-Token: ABCDEFJ....
+
+
+
+ +
+ diff --git a/docs/ocr/api-ref/ocr_03_0006.html b/docs/ocr/api-ref/ocr_03_0006.html new file mode 100644 index 00000000..6bff97a3 --- /dev/null +++ b/docs/ocr/api-ref/ocr_03_0006.html @@ -0,0 +1,104 @@ + + +

Response

+

After sending a request, you will receive a response, including a status code, response header, and response body.

+

Status Codes

A status code is a group of digits, ranging from 1xx to 5xx. It indicates the status of a request. For more information, see Status Codes.

+

If status code 201 is returned, the request is successful.

+
+

Response Header

Similar to a request, a response also has a header, for example, Content-Type.

+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + +
Table 1 Common response headers

Header

+

Description

+

Mandatory

+

Content-Type

+

Media type of the response body sent to a recipient

+

Type: string

+

Default value: application/json; charset=UTF-8

+

Yes

+

X-request-id

+

Request ID for task tracing

+

Type: string request_id-timestamp-hostname (request_id is the UUID generated on the server. timestamp indicates the current timestamp, and hostname is the name of the server that processes the current API.)

+

Default value: none

+

No

+

X-ratelimit

+

Total number of flow control requests

+

Type: integer

+

Default value: none

+

No

+

X-ratelimit-used

+

Number of remaining requests

+

Type: integer

+

Default value: none

+

No

+

X-ratelimit-window

+

Flow control unit

+

Type: string. The unit is in minute, hour, or day.

+

Default value: hour

+

No

+
+
+

The message header shown in Figure 3-1 is returned.

+

x-subject-token is the desired user token. This token can then be used to authenticate the calling of other APIs.

+
Figure 1 Header fields of the response to the request for obtaining a user token
+
+

Response Body

A response body conveys information other than the response header and is generally sent in a structured format (for example, JSON or XML) defined by the Content-Type field in the response header.

+

The following message body is returned. The following is part of the response body:

+
{ 
+    "token": { 
+        "expires_at": "2019-02-13T06:52:13.855000Z", 
+        "methods": [ 
+            "password" 
+        ], 
+        "catalog": [ 
+            { 
+                "endpoints": [ 
+                    { 
+                        "region_id": "********", 
+......
+

If an error occurs during API calling, an error code and error message will be displayed. An error response body is shown as follows:

+
{  
+    "error_msg": "The input parameter is invalid.",  
+    "error_code": "AIS.0101"  
+}
+

In the error response body, error_code is an error code, and error_msg provides information about the error. For more information, see Error Codes.

+
+
+
+ +
+ + + \ No newline at end of file diff --git a/docs/ocr/api-ref/ocr_03_0014.html b/docs/ocr/api-ref/ocr_03_0014.html new file mode 100644 index 00000000..84d0b49d --- /dev/null +++ b/docs/ocr/api-ref/ocr_03_0014.html @@ -0,0 +1,13 @@ + + +

API

+
+ + diff --git a/docs/ocr/api-ref/ocr_03_0028.html b/docs/ocr/api-ref/ocr_03_0028.html new file mode 100644 index 00000000..5867f864 --- /dev/null +++ b/docs/ocr/api-ref/ocr_03_0028.html @@ -0,0 +1,384 @@ + + +

Error Codes

+

No data will be returned if an API fails to be called. You can locate the error cause based on the error code of each API. When an API call fails, HTTPS status code 4xx or 5xx is returned. The returned message body contains the specific error code and error information. If you fail to locate the cause of the error, contact technical support and provide the error code for troubleshooting.

+

Error Response Body Format

If an error occurs during API calling, an error code and error message will be displayed. An error response body is shown as follows:

+
{  
+    "error_msg": "The input parameter is invalid.",  
+    "error_code": "AIS.0101"  
+}
+

In the error response, error_code indicates an error code, and error_msg describes the error.

+
+

Error Codes

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Category

+

Error Code

+

Error Message

+

Description

+

Solution

+

OCR

+

AIS.0101

+

The input parameter is invalid.

+

The input parameter does not meet the requirements.

+

Check whether the input parameters are correct. Possible causes are as follows:

+
  • Both image and url set, or the value format is incorrect.
  • true or false is incorrectly spelled.
  • Incorrect characters are included in the parameter value.
+

For details about the parameter value format, see the request parameter description of each API.

+

AIS.0102

+

The image format is not supported.

+

The image format is not supported.

+

Check the image format. For details about the image format supported by each service, see "Constraints and Limitations" in the related API section.

+

AIS.0103

+

The image size does not meet the requirements.

+

The image size does not meet the requirements.

+

Check the image size. For details about the image size supported by each service, see "Constraints and Limitations" in the related API section.

+

AIS.0104

+

The image is not supported or the image quality is poor.

+

The image is not supported or is of poor quality.

+

Check the image type and quality.

+

Check whether the called API is correct.

+

AIS.0105

+

Recognition failed.

+

Algorithm calculation failed.

+

Contact technical support.

+

Platform

+

ModelArts.0203

+

Invalid token.

+

Invalid token.

+

Ensure that the token is correct.

+

ModelArts.4101

+

Token header cannot be empty.

+

The token is empty.

+

The HTTP request header does not contain the token request authentication information of x-auth-token. Check the request.

+

ModelArts.4102

+

Parse Token error.

+

Failed to parse the token.

+

The token request authentication information of x-auth-token in the HTTP request header is incorrect. Check the sent request and token.

+

ModelArts.4103

+

Invalid Token header.

+

The token is invalid.

+

The token request authentication information of x-auth-token in the HTTP request header is incorrect. Check the sent request and token.

+

ModelArts.4104

+

Invalid Request Content Length.

+

The length of the request body is invalid.

+

Check the request body length. The size cannot exceed 10 MB.

+

ModelArts.4105

+

The JSON format of the input data is incorrect.

+

The JSON format of the request body is incorrect.

+

Check the JSON format of the request body.

+

ModelArts.4201

+

Request url need service id.

+

The request URL does not contain the service ID.

+

Check the service ID in the request URL.

+

ModelArts.4202

+

Request url format invalid.

+

The request URL format is invalid.

+

Check the request URL format.

+

ModelArts.4203

+

Access denied! You do not have permission.

+

No access permission.

+

Check the access permission.

+

ModelArts.4204

+

Request api error! The API XXX is not subscribed.

+

Failed to request the service because the service has not been subscribed.

+
  • Go to the OCR console, select an appropriate region, and subscribe to the API you need.
  • If the service has been subscribed to, check whether the region (or account) where the service is subscribed to is the same as the region (or account) where the service is called. If they are the same, check whether the URL of the API is spelled correctly.
+

ModelArts.4301

+

Have error when get ai-service admin token.

+

Failed to obtain the admin token of the service.

+

Contact technical support.

+

ModelArts.4302

+

Gateway forwarding error.

+

The serviced failed to be accessed.

+

Contact technical support.

+

ModelArts.4401

+

Max concurrency error.

+

The number of concurrent requests exceeds the upper limit.

+

Contact technical support.

+

ModelArts.4402

+

Backend service timeout error.

+

Service processing timed out.

+

Contact technical support.

+

ModelArts.4403

+

Backend service unavailable error.

+

The service is unavailable because it failed to respond or its failure rate is high.

+

Contact technical support.

+

ModelArts.4502

+

Backend service response error.

+

The service failed to respond.

+

Contact technical support.

+

ModelArts.4503

+

Backend service found error.

+

The service does not exist.

+

Contact technical support.

+

ModelArts.4504

+

Backend service api not found.

+

The API to be accessed does not exist.

+

Contact technical support.

+

ModelArts.4505

+

Backend service internal error.

+

Internal server error.

+

Contact technical support.

+

ModelArts.4506

+

SubService service found error.

+

The subservice corresponding to the API does not exist.

+

Contact technical support.

+

ModelArts.4508

+

Service not start.

+

The service does not exist or is stopped.

+

Contact technical support.

+

ModelArts.4601

+

The URL is not allowed.

+

The external URL is invalid.

+

Check the format of the entered download address.

+

ModelArts.4603

+

Obtaining the file from the URL failed.

+

Failed to download files from the external URL.

+

Check the network and URL.

+

ModelArts.4702

+

Query Obs agency failed.

+

Failed to query the OBS agency.

+

Check whether the OBS agency has been enabled for the service.

+

ModelArts.4703

+

The Obs URL is invalid.

+

The OBS URL is invalid.

+

Check the OBS URL.

+

ModelArts.4704

+

Obtaining the file from the OBS failed.

+

The OBS file failed to be obtained.

+

Check the OBS file.

+

ModelArts.4705

+

The file stored on the OBS is oversized.

+

The OBS file is oversized.

+

Check the size of the OBS file and ensure that the file does not exceed the size limit.

+

ModelArts.4706

+

The Obs file is not exist.

+

The OBS file does not exist.

+

Check whether the corresponding file exists.

+

APIG

+

APIG.0101

+

The API does not exist or has not been published in the environment.

+

The API does not exist or has not been published.

+
  • Check whether the API URL is correct. For example, check whether the project ID is included in the URL.
  • Check whether the region in the URI is the same as that configured for calling the service by referring to Endpoint.
  • Check whether the HTTP request method (such as POST and GET) is correct.
  • For details about the URI, see the corresponding API page.
+

APIG.0201

+

Backend timeout.

+

Request timed out.

+
  • Check whether the original API call requests are excessively frequent. If so, check the return value in the code and resend the requests later (for example, 2 to 5 seconds later). You can also check whether the result of the previous request is returned at the backend. After the result of the previous request is returned, send the next request.
  • Check whether the image is too large or the network delay is too long. If the image is too large, compress the image in proportion while ensuring the image definition. If the network delay is long, you can increase the network transmission speed.
+

APIG.0301

+

Incorrect IAM authentication information.

+

The IAM authentication information is incorrect.

+
  • decrypt token fail: The token fails to be parsed.
  • token expires: The token has expired.
  • x-auth-token not found: The x-auth-token parameter is not found.
+
  • If the token fails to be parsed, check the method for obtaining the token, whether the request body is correct, whether the token is correct, and whether the environment for obtaining the token is the same as the environment for calling the token.
  • If the token expires, obtain a new token that is valid permanently.
  • Check whether the spelling of X-Auth-Token in the request header is correct.
+

APIG.0308

+

The throttling threshold has been reached: policy user over ratelimit,limit:XX,time:1 minute.

+

The request exceeds the default rate limit of the service.

+

Rectify the fault using either of the following methods:

+
  • Use the retry mechanism to rectify the fault by checking the return value in the code and retrying the requests after a short period of time (for example, 2 to 5 seconds).
  • You can also check whether the result of the previous request is returned at the backend. After the result of the previous request is returned, send the next request.
+

Other

+

If other error codes cannot be rectified, contact technical support.

+
+
+
+
+
+ +
+ diff --git a/docs/ocr/api-ref/ocr_03_0029.html b/docs/ocr/api-ref/ocr_03_0029.html new file mode 100644 index 00000000..418c3f63 --- /dev/null +++ b/docs/ocr/api-ref/ocr_03_0029.html @@ -0,0 +1,20 @@ + + +

Change History

+
+
+ + + + + + + +
Table 1 Change history

Release Date

+

What's New

+

2024-01-08

+

This issue is the first official release.

+
+
+
+ diff --git a/docs/ocr/api-ref/ocr_03_0031.html b/docs/ocr/api-ref/ocr_03_0031.html new file mode 100644 index 00000000..ec4daf77 --- /dev/null +++ b/docs/ocr/api-ref/ocr_03_0031.html @@ -0,0 +1,517 @@ + + +

General Table

+

Function

This API detects and extracts text from table images and converts the text into JSON format. The returned results include two types of image area (words_region): text area (text) and table area (table). They also include table structures (rows and columns) and text information.

+
+

Constraints and Limitations

  • Only images in PNG, JPG, JPEG, BMP, or TIFF format can be recognized.
  • No side of the image can be smaller than 15 or larger than 8,192 pixels.
  • The area to be recognized must occupy more than 80% of the image. When scanning a table, ensure that the entire table and its surrounding area are included in the image.
  • An image can be rotated to any angle.
  • Text in images with complex backgrounds (such as outdoor scenery or anti-counterfeit watermarks) or distorted table lines cannot be recognized.
  • English and Chinese are supported but support for traditional Chinese characters is limited.
+
+

URI

POST /v2/{project_id}/ocr/general-table

+ +
+ + + + + + + + + + + + + +
Table 1 URI parameters

Parameter

+

Mandatory

+

Description

+

endpoint

+

Yes

+

Endpoint, which is the request address for calling an API.

+

The endpoint varies depending on services in different regions. For more details, see Endpoint.

+

project_id

+

Yes

+

Project ID, which can be obtained by referring to Obtaining the Project ID.

+
+
+
+

Request Parameters

+
+ + + + + + + + + + + + + + + + +
Table 2 Request header parameters

Parameter

+

Mandatory

+

Type

+

Description

+

X-Auth-Token

+

Yes

+

String

+

User token.

+

Used to obtain the permission to call APIs. The token is the value of X-Subject-Token in the response header in Authentication.

+

Content-Type

+

Yes

+

String

+

MIME type of the request body. The value is application/json.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 3 Request body parameters

Parameter

+

Mandatory

+

Type

+

Description

+

image

+

No

+

String

+

Set either this parameter or url.

+

Base64-encoded image file. The image file has a size limit of 10 MB.

+

No side of the image can be smaller than 15 or larger than 8,192 pixels. Only images in JPEG, JPG, PNG, BMP, or TIFF format can be recognized.

+

An example is /9j/4AAQSkZJRgABAg.... If the image data contains an unnecessary prefix, the error "The image format is not supported" is reported.

+

url

+

No

+

String

+

Set either this parameter or image. Image URL. Currently, the following URLs are supported:

+
  • Public HTTP/HTTPS URL
  • URL provided by OBS.
+
NOTE:
  • The API response time depends on the image download time. If the image download takes a long time, the API call will fail.
  • Ensure that the storage service where the images to be detected reside is stable and reliable. OBS is recommended for storing image data.
  • The URL cannot contain Chinese characters. If Chinese characters exist, they must be encoded using UTF-8.
+
+

return_text_location

+

No

+

Boolean

+

Whether to return coordinates of text blocks and cells. Possible values are as follows:

+
  • true: Coordinates of text blocks and cells will be returned.
  • false: Coordinates of text blocks and cells will not be returned.
+

If this parameter is not specified, false is used by default.

+

return_char_location

+

No

+

Boolean

+

Coordinate information of a single character. The options are as follows:

+
  • true: The coordinates of a single character will be returned.
  • false: The coordinates of a single character will not be returned.
+

If this parameter is not specified, false is used by default. If this parameter is set to true, return_text_location must be true.

+

return_confidence

+

No

+

Boolean

+

Whether the confidence will be returned. The options are as follows:

+
  • true: The confidence will be returned.
  • false: The confidence will not be returned.
+

If this parameter is not specified, false is used by default. In this case, the confidence will not be returned.

+

return_excel

+

No

+

Boolean

+

Whether to return the Base64-encoded field for converting a table into a Microsoft Excel file. The options are as follows:

+
  • true: The Base64-encoded excel field will be returned.
  • false: The Base64-encoded excel field will not be returned. The default value is false.
+

You can use the Python function base64.b64decode to decode the returned Excel code and save it as an .xlsx file.

+

return_rectification_matrix

+

No

+

Boolean

+

The options are as follows:

+
  • true: The perspective transformation matrix will be returned.
  • false: The perspective transformation matrix will not be returned.
+

If this parameter is not specified, false is used by default. In this case, the perspective transformation matrix will not be returned.

+

with_borders

+

No

+

Boolean

+

The options are as follows:

+
  • true: The input image contains only bordered tables, and only such tables are recognized.
  • false: The input image may contain borderless tables, and both bordered and borderless tables are recognized.
+

If this parameter is not specified, the default value false is used. If the input image contains only bordered tables, set this parameter to true to achieve more accurate recognition results.

+
+
+
+

Response Parameters

The status code may vary depending on the recognition results. For example, 200 indicates that the API is successfully called, and 400 indicates that the API fails to be called. The following describes the status codes and corresponding response parameters.

+
+

Status code: 200

+ +
+ + + + + + + + + +
Table 4 Response body parameter

Parameter

+

Type

+

Description

+

result

+

Table 5

+

Calling result of a successful API call

+

This parameter is not included when the API fails to be called.

+
+
+ +
+ + + + + + + + + + + + + + + + + +
Table 5 GeneralTableResult

Parameter

+

Type

+

Description

+

words_region_count

+

Integer

+

Number of text areas

+

words_region_list

+

Array of Table 6

+

List of recognition results in text areas. The output sequence is from left to right and from top to bottom.

+

excel

+

String

+

The table image is converted into the Base64 code of the Excel file. The text and table in the image are written into the Excel file by position. You can use base64.b64decode to decode the returned Excel code and save it as an .xlsx file.

+
+
+ +
+ + + + + + + + + + + + + + + + + +
Table 6 WordsRegionList

Parameter

+

Type

+

Description

+

type

+

String

+

Type of the text identification area. The options are as follows:

+
  • text: text recognition area
  • table: table recognition area
+

words_block_count

+

Integer

+

Number of text blocks recognized in a sub-area

+

words_block_list

+

Array of Table 7

+

List of text blocks recognized in a sub-area. The output sequence is from left to right and from top to bottom.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 7 GeneralTableWordsBlockList

Parameter

+

Type

+

Description

+

words

+

String

+

Recognition result of a text block

+

confidence

+

Float

+

Average confidence of fields. A higher confidence indicates a higher accuracy of the field identified. The confidence is calculated using algorithms and is not the measured accuracy.

+

location

+

Array<Array<Integer>>

+

Text block location information, in list format, indicating the X and Y coordinates of the four vertices in a text block. The coordinate origin is the upper left corner of the image, the X axis is horizontal, and the Y axis is vertical.

+

words_list

+

Array of Table 8

+

List of the character blocks in a cell. The text is from left to right and from top to bottom. This parameter is available only when the input parameter return_text_location is set to true.

+

rows

+

Array of integers

+

Rows occupied by text. The values start from 0 and are displayed in a list. The data type is Integer. This parameter is valid only in table recognition areas, that is, this parameter is valid only when type is table.

+

columns

+

Array of integers

+

Columns occupied by text. The values start from 0 and are displayed in a list. The data type is Integer. This parameter is valid only in table recognition areas, that is, this parameter is valid only when type is table.

+

cell_location

+

Array<Array<Integer>>

+

Cell position information, in list format, indicating the X and Y coordinates of the four vertices in a cell. The coordinate origin is the upper left corner of the image, the X axis is horizontal, and the Y axis is vertical.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
Table 8 WordsListIem

Parameter

+

Type

+

Description

+

words

+

String

+

Recognition result of a text block

+

confidence

+

Float

+

Average confidence of fields. A higher confidence indicates a higher accuracy of the field identified. The confidence is calculated using algorithms and is not the measured accuracy.

+

location

+

Array<Array<Integer>>

+

Text block location information, in list format, indicating the X and Y coordinates of the four vertices in a text block. The coordinate origin is the upper left corner of the image, the X axis is horizontal, and the Y axis is vertical.

+

char_list

+

Array of Table 9

+

List of the character blocks in a cell. The text is from left to right and from top to bottom. This parameter is available only when the input parameters return_text_location and return_char_location are both set to true.

+
+
+ +
+ + + + + + + + + + + + + + + + + +
Table 9 CharListIem

Parameter

+

Type

+

Description

+

char

+

String

+

Recognition result of a single character

+

char_confidence

+

Float

+

Confidence of a single character. A higher confidence indicates a higher accuracy of the field identified. The confidence is calculated using algorithms and is not equal to the accuracy.

+

char_location

+

Array<Array<Integer>>

+

Location information of a single character, in list format, indicating the X and Y coordinates of the four vertices in a text block. The coordinate origin is the upper left corner of the image, the X axis is horizontal, and the Y axis is vertical.

+
+
+

Status code: 400

+ +
+ + + + + + + + + + + + + +
Table 10 Response body parameters

Parameter

+

Type

+

Description

+

error_code

+

String

+

Error code when calling the API failed

+

This parameter is not returned when the API is successfully called.

+

error_msg

+

String

+

Error message when the API call fails

+

This parameter is not included when the API is successfully called.

+
+
+
+

Example Request

  • Transfer the Base64 code of a table image for recognition and does not return the confidence.
    POST https://{endpoint}/v2/{project_id}/ocr/general-table 
    +  Request Header:    
    +  Content-Type: application/json    
    +  X-Auth-Token: MIINRwYJKoZIhvcNAQcCoIINODCCDTQCAQExDTALBglghkgBZQMEAgEwgguVBgkqhkiG...       
    +  Request Body: 
    +  {    
    +     "image":"/9j/4AAQSkZJRgABAgEASABIAAD/4RFZRXhpZgAATU0AKgAAAAg...", 
    +     "return_confidence":false 
    +   }
    +
  • Transfer the URL of a table image for recognition and does not return the confidence.
    POST https://{endpoint}/v2/{project_id}/ocr/general-table 
    +  Request Header:    
    +  Content-Type: application/json    
    +  X-Auth-Token: MIINRwYJKoZIhvcNAQcCoIINODCCDTQCAQExDTALBglghkgBZQMEAgEwgguVBgkqhkiG...       
    +  Request Body: 
    +  { 
    +      "url":"https://BucketName.obs.xxxx.com/ObjectName", 
    +      "return_confidence":false 
    +   }
    +
+
+

Example Response

Status code: 200

+

Example response for a successful request

+
{ 
+  "result" : { 
+    "words_region_count" : 2, 
+    "words_region_list" : [ { 
+      "type" : "text", 
+      "words_block_count" : 1, 
+      "words_block_list" : [ { 
+        "words": "Text block 1 recognized in the text area",
+        "confidence" : 0.9991 
+      } ] 
+    }, { 
+      "type" : "table", 
+      "words_block_count" : 2, 
+      "words_block_list" : [ { 
+        "words": "Text block 1 recognized in the table area",
+        "confidence" : 0.9942, 
+        "rows" : [ 0 ], 
+        "columns" : [ 0 ] 
+      }, { 
+        "words": "Text block 2 recognized in the table area",
+        "confidence" : 0.914, 
+        "rows" : [ 0 ], 
+        "columns" : [ 1, 2 ] 
+      } ] 
+    } ] 
+  } 
+}
+

Status code: 400

+

Example response for a failed request

+
{ 
+  "result" : { 
+    "error_code" : "AIS.0103", 
+    "error_msg" : "The image size does not meet the requirements." 
+  } 
+}
+
+

Status Codes

+
+ + + + + + + + + + +

Status Code

+

Description

+

200

+

Response for a successful request

+

400

+

Response for a failed request

+
+
+

See Status Codes.

+
+

Error Codes

See Error Codes.

+
+
+
+ +
+ diff --git a/docs/ocr/api-ref/ocr_03_0042.html b/docs/ocr/api-ref/ocr_03_0042.html new file mode 100644 index 00000000..7cbc8d63 --- /dev/null +++ b/docs/ocr/api-ref/ocr_03_0042.html @@ -0,0 +1,405 @@ + + +

General Text

+

Function

This API detects and extracts text from images and converts the text and coordinates into JSON format. It can be used in various scenarios, such as scanned documents, electronic documents, books, receipts, and forms.

+
+

Constraints and Limitations

  • Only images in PNG, JPG, JPEG, BMP, GIF, or TIFF format can be recognized.
  • No side of the image can be smaller than 15 or larger than 8,192 pixels.
  • The area to be recognized must occupy more than 80% of the image. When scanning a table, ensure that all text and its surrounding area are included in the image.
  • An image can be rotated to any angle.
  • Text in images with complex backgrounds (such as outdoor scenery or anti-counterfeit watermarks) or distorted text cannot be recognized.
  • Supported languages: Chinese, English, some traditional Chinese, Malay, Ukrainian, Hindi, Russian, Vietnamese, Indonesian, Thai, Arabic, German, Latin, French, Italian, Spanish, Portuguese, Romanian, Polish Amharic, Japanese, Korean, Turkish, Norwegian, Danish, and Swedish.
+
+

URI

POST /v2/{project_id}/ocr/general-text

+ +
+ + + + + + + + + + + + + +
Table 1 URI parameters

Parameter

+

Mandatory

+

Description

+

endpoint

+

Yes

+

Endpoint, which is the request address for calling an API.

+

The endpoint varies depending on services in different regions. For more details, see Endpoint.

+

project_id

+

Yes

+

Project ID, which can be obtained by referring to Obtaining the Project ID.

+
+
+
+

Request Parameters

+
+ + + + + + + + + + + + + + + + +
Table 2 Request header parameters

Parameter

+

Mandatory

+

Type

+

Description

+

X-Auth-Token

+

Yes

+

String

+

User token.

+

Used to obtain the permission to use APIs. The token is the value of X-Subject-Token in the response header in Authentication.

+

Content-Type

+

Yes

+

String

+

MIME type of the request body. The value is application/json.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 3 Request body parameters

Parameter

+

Mandatory

+

Type

+

Description

+

image

+

No

+

String

+

Set either this parameter or url.

+

Base64-encoded image file. The image file has a size limit of 10 MB.

+

No side of the image can be smaller than 15 or larger than 8,192 pixels. Only images in JPEG, JPG, PNG, BMP, GIF, or TIFF format can be recognized.

+

An example is /9j/4AAQSkZJRgABAg.... If the image data contains an unnecessary prefix, the error "The image format is not supported" is reported.

+

url

+

No

+

String

+

Set either this parameter or image. Image URL. Currently, the following URLs are supported:

+
  • Public HTTP/HTTPS URL
  • URL provided by OBS.
+
NOTE:
  • The API response time depends on the image download time. If the image download takes a long time, the API call will fail.
  • Ensure that the storage service where the images to be detected reside is stable and reliable. OBS is recommended for storing image data.
  • The URL cannot contain Chinese characters. If Chinese characters exist, they must be encoded using UTF-8.
+
+

detect_direction

+

No

+

Boolean

+

Whether to align the tilted image. The options are as follows:

+
  • true: The tilted image will be aligned.
  • false: The tilted image will not be aligned.
+

An image tilted to any angle can be aligned. If this parameter is not specified, false is used by default.

+

If the image to be recognized is tilted, you are advised to set this parameter to true.

+

quick_mode

+

No

+

Boolean

+

Whether to enable the quick mode. For a single-line text image (the image contains only one line of text and the text area occupies more than 50% of the image), the recognition results can be returned more quickly when this quick mode is enabled. The options are as follows:

+
  • true: The quick mode will be enabled.
  • false: The quick mode will be disabled.
+

If this parameter is not specified, false is used by default.

+

character_mode

+

No

+

Boolean

+

Whether to enable the single-character mode. The options are as follows:

+
  • true: The single-character mode is enabled.
  • false: The single-character mode is disabled.
+

If this parameter is not transferred, the default value false is used, and information about a single character that occupies a text line is not returned.

+

language

+

No

+

String

+

Language. If this parameter is not specified, Chinese and English will be used by default. The options are as follows:

+
  • auto: automatic language classification
  • ms: Malay
  • uk: Ukrainian
  • hi: Hindi
  • ru: Russian
  • vi: Vietnamese
  • id: Indonesian
  • th: Thai
  • zh: Chinese and English
  • ar: Arabic
  • de: German
  • la: Latin
  • fr: French
  • it: Italian
  • es: Spanish
  • pt: Portuguese
  • ro: Romanian
  • pl: Polish
  • am: Amharic
  • ja: Japanese
  • ko: Korean
  • tr: Turkish
  • no: Norwegian
  • da: Danish
  • sv: Swedish
+

single_orientation_mode

+

No

+

Boolean

+

Whether to enable the single direction mode. The options are as follows:

+
  • true: The single direction mode is enabled.
  • false: The single direction mode is disabled.
+

If this parameter is not specified, false is used by default. In this case, the fields in the image are recognized as in multiple directions by default.

+
+
+
+

Response Parameters

The status code may vary depending on the recognition results. For example, 200 indicates that the API is successfully called, and 400 indicates that the API fails to be called. The following describes the status codes and corresponding response parameters.

+
+

Status code: 200

+ +
+ + + + + + + + + +
Table 4 Response body parameter

Parameter

+

Type

+

Description

+

result

+

Table 5

+

Recognition result

+

This parameter is not returned when the API fails to be called.

+
+
+ +
+ + + + + + + + + + + + + + + + + +
Table 5 GeneralTextResult

Parameter

+

Type

+

Description

+

direction

+

Float

+

Image direction

+
  • This parameter is available only when detect_direction is set to true. The anti-clockwise rotation angle of an image is returned. The value ranges from 0 to 359.
  • When detect_direction is set to false, the value of this parameter is -1.
+

words_block_count

+

Integer

+

Number of detected text blocks

+

words_block_list

+

Array of Table 6

+

List of recognized text blocks. The output sequence is from left to right and from top to bottom.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
Table 6 GeneralTextWordsBlockList

Parameter

+

Type

+

Description

+

words

+

String

+

Recognition result of a text block

+

location

+

Array<Array<Integer>>

+

List of location information about a text block, including the 2D coordinates (x, y) of four vertexes in the text area, where the coordinate origin is the upper-left corner of the image, the X axis is horizontal, and the Y axis is vertical.

+

confidence

+

Float

+

Confidence of a recognized text block

+

char_list

+

Array of Table 7

+

Single-character recognition list corresponding to a text block. The output sequence is from left to right and from top to bottom.

+
+
+ +
+ + + + + + + + + + + + + + + + + +
Table 7 GeneralTextCharList

Parameter

+

Type

+

Description

+

char

+

String

+

Recognition result of a single character

+

char_location

+

Array<Array<Integer>>

+

List of location information about a single character, including the 2D coordinates (x, y) of four vertexes in the character area, where the coordinate origin is the upper-left corner of the image, the X axis is horizontal, and the Y axis is vertical.

+

char_confidence

+

Float

+

Confidence of a recognized character

+
+
+

Status code: 400

+ +
+ + + + + + + + + + + + + +
Table 8 Response body parameters

Parameter

+

Type

+

Description

+

error_code

+

String

+

Error code when calling the API failed

+

This parameter is not returned when the API is successfully called.

+

error_msg

+

String

+

Error message when the API call fails

+

This parameter is not returned when the API is successfully called.

+
+
+
+

Example Request

  • Transfer the Base64 code of the image for recognition. During the recognition, the tilt angle of the image is not verified, and the quick mode is disabled.
    POST https://{endpoint}/v2/{project_id}/ocr/general-text 
    +  Request Header:    
    +  Content-Type: application/json    
    +  X-Auth-Token: MIINRwYJKoZIhvcNAQcCoIINODCCDTQCAQExDTALBglghkgBZQMEAgEwgguVBgkqhkiG...    
    +  Request Body: 
    +  {    
    +     "image":"/9j/4AAQSkZJRgABAgEASABIAAD/4RFZRXhpZgAATU0AKgAAAA...", 
    +     "detect_direction":false, 
    +     "quick_mode":false 
    +   }
    +
  • Transfer the URL of the image for recognition. During the recognition, the tilt angle of the image is not verified, and the quick mode is disabled.
    POST https://{endpoint}/v2/{project_id}/ocr/general-text 
    +  Request Header:    
    +  Content-Type: application/json    
    +  X-Auth-Token: MIINRwYJKoZIhvcNAQcCoIINODCCDTQCAQExDTALBglghkgBZQMEAgEwgguVBgkqhkiG...    
    +  Request Body: 
    +  { 
    +      "url":"https://BucketName.obs.xxxx.com/ObjectName", 
    +      "detect_direction":false, 
    +      "quick_mode":false 
    +   }
    +
+
+

Example Response

Status code: 200

+

Example response for a successful request

+
{ 
+  "result" : { 
+    "direction" : 67.6506, 
+    "words_block_count" : 1, 
+    "words_block_list" : [ { 
+      "words": "Word",
+      "confidence" : 0.9999, 
+      "location" : [ [ 517, 447 ], [ 540, 504 ], [ 505, 518 ], [ 482, 461 ] ], 
+      "char_list" : [ { 
+        "char": "Character",
+        "char_location" : [ [ 517, 447 ], [ 530, 479 ], [ 495, 493 ], [ 482, 461 ] ], 
+        "char_confidence" : 0.9999 
+      }, { 
+        "char": "Character",
+        "char_location" : [ [ 530, 479 ], [ 540, 504 ], [ 505, 518 ], [ 495, 493 ] ], 
+        "char_confidence" : 0.9999 
+      } ] 
+    } ] 
+  } 
+}
+

Status code: 400

+

Example response for a failed request

+
{ 
+    "error_code": "AIS.0103", 
+    "error_msg": "The image size does not meet the requirements." 
+}
+
+

Status Codes

+
+ + + + + + + + + + +

Status Code

+

Description

+

200

+

Response for a successful request

+

400

+

Response for a failed request

+
+
+
+

See Status Codes.

+

Error Codes

See Error Codes.

+
+
+
+ +
+ diff --git a/docs/ocr/api-ref/ocr_03_0043.html b/docs/ocr/api-ref/ocr_03_0043.html new file mode 100644 index 00000000..5f3fce9f --- /dev/null +++ b/docs/ocr/api-ref/ocr_03_0043.html @@ -0,0 +1,12 @@ + + +

Subscribing to an OCR Service

+
  1. Log in to the OCR management console.

    Select a region based on your business needs. For details about the regions where services are deployed, see Regions and Endpoints.

    +
  2. On the page displayed, select and subscribe to your desired APIs.
+
+
+ +
+ diff --git a/docs/ocr/api-ref/ocr_03_0046.html b/docs/ocr/api-ref/ocr_03_0046.html new file mode 100644 index 00000000..583dc39e --- /dev/null +++ b/docs/ocr/api-ref/ocr_03_0046.html @@ -0,0 +1,13 @@ + + +

Overview

+

Optical Character Recognition (OCR) detects and extracts text from images and converts the text into an editable JSON format.

+

OCR is provided to you through open APIs. You can access and call APIs in real-time to obtain inference results, which helps you automatically collect key data and build intelligent business systems, ultimately improving business efficiency.

+

Before calling an OCR API, make sure you have a thorough understanding of the relevant concepts listed in Basic Concepts.

+
+
+ +
+ diff --git a/docs/ocr/api-ref/ocr_03_0047.html b/docs/ocr/api-ref/ocr_03_0047.html new file mode 100644 index 00000000..a6e18b59 --- /dev/null +++ b/docs/ocr/api-ref/ocr_03_0047.html @@ -0,0 +1,26 @@ + + +

API Overview

+

All OCR APIs are proprietary. By calling such APIs, you can use the OCR functions described in Table 1.

+ +
+ + + + + + + + + + +
Table 1 API description

API

+

Description

+

General Text

+

This API detects and extracts text from images and converts the text and coordinates into a structured format.

+

General Table

+

This API detects and extracts text from images of general tables and converts the text into a structured format.

+
+
+
+ diff --git a/docs/ocr/api-ref/ocr_03_0048.html b/docs/ocr/api-ref/ocr_03_0048.html new file mode 100644 index 00000000..4177fcc4 --- /dev/null +++ b/docs/ocr/api-ref/ocr_03_0048.html @@ -0,0 +1,15 @@ + + +

Common Parameters

+
+ + diff --git a/docs/ocr/api-ref/ocr_03_0060.html b/docs/ocr/api-ref/ocr_03_0060.html new file mode 100644 index 00000000..384e87af --- /dev/null +++ b/docs/ocr/api-ref/ocr_03_0060.html @@ -0,0 +1,19 @@ + + +

Before You Start

+
+ + diff --git a/docs/ocr/api-ref/ocr_03_0061.html b/docs/ocr/api-ref/ocr_03_0061.html new file mode 100644 index 00000000..87be8b1f --- /dev/null +++ b/docs/ocr/api-ref/ocr_03_0061.html @@ -0,0 +1,11 @@ + + +

API Calling

+

OCR offers REST APIs that support HTTPS requests. For information on how to call an API, see API Calling.

+
+
+ +
+ diff --git a/docs/ocr/api-ref/ocr_03_0062.html b/docs/ocr/api-ref/ocr_03_0062.html new file mode 100644 index 00000000..369f4507 --- /dev/null +++ b/docs/ocr/api-ref/ocr_03_0062.html @@ -0,0 +1,11 @@ + + +

Endpoint

+

An endpoint is the request address used to call an API. Different services have different endpoints for different regions. You can query all service endpoints at Regions and Endpoints.

+
+
+ +
+ diff --git a/docs/ocr/api-ref/ocr_03_0063.html b/docs/ocr/api-ref/ocr_03_0063.html new file mode 100644 index 00000000..42dd0d76 --- /dev/null +++ b/docs/ocr/api-ref/ocr_03_0063.html @@ -0,0 +1,14 @@ + + +

Constraints and Limitations

+

General Table OCR

  • Only images in PNG, JPG, JPEG, BMP, or TIFF format can be recognized.
  • No side of the image can be smaller than 15 or larger than 8,192 pixels.
  • The area to be recognized must occupy more than 80% of the image. When scanning a table, ensure that the entire table and its surrounding area are included in the image.
  • An image can be rotated to any angle.
  • Text in images with complex backgrounds (such as outdoor scenery or anti-counterfeit watermarks) or distorted table lines cannot be recognized.
  • English and Chinese are supported but support for traditional Chinese characters is limited.
+
+

General Text OCR

  • Only images in PNG, JPG, JPEG, BMP, GIF, or TIFF format can be recognized.
  • No side of the image can be smaller than 15 or larger than 8,192 pixels.
  • The area to be recognized must occupy more than 80% of the image. When scanning a table, ensure that all text and its surrounding area are included in the image.
  • An image can be rotated to any angle.
  • Text in images with complex backgrounds (such as outdoor scenery or anti-counterfeit watermarks) or distorted text cannot be recognized.
  • Supported languages: Chinese, English, some traditional Chinese, Malay, Ukrainian, Hindi, Russian, Vietnamese, Indonesian, Thai, Arabic, German, Latin, French, Italian, Spanish, Portuguese, Romanian, Polish Amharic, Japanese, Korean, Turkish, Norwegian, Danish, and Swedish.
+
+
+
+ +
+ diff --git a/docs/ocr/api-ref/ocr_03_0064.html b/docs/ocr/api-ref/ocr_03_0064.html new file mode 100644 index 00000000..df8c42cd --- /dev/null +++ b/docs/ocr/api-ref/ocr_03_0064.html @@ -0,0 +1,26 @@ + + +

Basic Concepts

+
  • Account

    An account refers to the username created during user registration and has complete access to all resources and cloud services. It can reset user passwords and assign user permissions. To ensure account security, it is recommended that you do not use the account for daily management tasks. Instead, create IAM users and use them for such purposes.

    +
  • User

    A user is created in IAM using an account and is a person who uses cloud services with identity credentials such as a password and access key. Typically, when authorizing API calls, you will need to provide information such as the account name, username, and password.

    +
  • Region

    A region is a physical location where a cloud service is deployed. Availability zones (AZs) in the same region can communicate with each other over an intranet but AZs in different regions cannot communicate with each other. By creating cloud resources in different regions, you can design applications to better meet customer requirements and comply with local laws and regulations.

    +
  • Availability zone

    An AZ contains one or more physical data centers. It has independent cooling, fire extinguishing, moisture-proof, and electricity facilities. Within an AZ, compute network, storage, and other resources are logically divided into multiple clusters. AZs within a region are interconnected using high-speed optical fibers to allow you to build cross-AZ high-availability systems.

    +
  • Project

    Projects group and isolate resources (including compute, storage, and network resources) across physical regions. A default project is provided for each region, and subprojects can be created under each default project. Users can be granted permissions to access all resources in a specific project. If you need more refined access control, create subprojects under a default project and purchase resources in subprojects. Then you can assign users the permissions required to access only the resources in the specific subprojects.

    +
    Figure 1 Project isolation model
    +
  • Checkpoint

    Consumption checkpoint. When an application consumes data, the latest SN of the consumed data is recorded as a checkpoint. When the data is consumed again, the consumption can be continued based on this checkpoint.

    +
  • App

    Application identifier. Multiple applications can access data in the same stream. Checkpoints generated for each application are used to record the consumed data in the stream by each application.

    +
+
+
+ +
+ + + \ No newline at end of file diff --git a/docs/ocr/api-ref/ocr_03_0090.html b/docs/ocr/api-ref/ocr_03_0090.html new file mode 100644 index 00000000..c5f5ca40 --- /dev/null +++ b/docs/ocr/api-ref/ocr_03_0090.html @@ -0,0 +1,329 @@ + + +

Status Codes

+

An HTTP status code consists of three digits, which is classified into five categories: 1xx: related information; 2xx: operation successful; 3xx: redirection; 4xx: client error; 5xx: server error.

+

The following table lists the common status codes.

+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Status Code

+

Message

+

Description

+

100

+

Continue

+

The client should proceed with the request.

+

This interim response is used to inform the client that part of the request has been received and has not yet been rejected by the server.

+

101

+

Switching Protocols

+

The server is switching to a new protocol. The target protocol must be more advanced than the original one.

+

For example, a later version of HTTPS is used.

+

200

+

OK

+

The server has successfully processed the request.

+

201

+

Created

+

The request has been fulfilled and resulted in a new resource being created.

+

202

+

Accepted

+

The request has been accepted, but the processing has not been completed.

+

203

+

Non-Authoritative Information

+

The request has been fulfilled.

+

204

+

No Content

+

The server has successfully processed the request, but does not return any content.

+

The status code is returned in response to an HTTP OPTIONS request.

+

205

+

Reset Content

+

The server has fulfilled the request and requires the client to reset the content.

+

206

+

Partial Content

+

The server has fulfilled the partial GET request for the resource.

+

300

+

Multiple Choices

+

There are multiple options for the location of the requested resource. The response contains a list of resource characteristics and addresses from which the user or user agent (such as a browser) can choose the most appropriate one.

+

301

+

Moved Permanently

+

This and all future requests have been permanently moved to the given URI indicated in this response.

+

302

+

Found

+

The requested resource has been temporarily moved.

+

303

+

See Other

+

The response to the request can be found under a different URI, and should be retrieved using a GET or POST method.

+

304

+

Not Modified

+

The requested resource has not been modified. When the server returns this status code, no resource is returned.

+

305

+

Use Proxy

+

The requested resource is available only through a proxy.

+

306

+

Unused

+

The HTTP status code is no longer used.

+

400

+

Bad Request

+

Invalid request.

+

Modify the request directly and do not attempt to retry it.

+

401

+

Unauthorized

+

The authorization information provided by the client is incorrect or invalid.

+

402

+

Payment Required

+

Reserved request.

+

403

+

Forbidden

+

The request is rejected.

+

The server has received and understood the request, but refused to respond to it. Modify the request directly and do not attempt to retry it.

+

404

+

Not Found

+

The requested resource does not exist.

+

Modify the request directly and do not attempt to retry it.

+

405

+

Method Not Allowed

+

The request contains a method that is not supported by the resource.

+

Modify the request directly and do not attempt to retry it.

+

406

+

Not Acceptable

+

The server could not fulfil the request based on the characteristics of the request.

+

407

+

Proxy Authentication Required

+

This status code is similar to 401, but the client must be authenticated using a proxy.

+

408

+

Request Timeout

+

The request timed out.

+

The client can resubmit the request at any time without making any changes.

+

409

+

Conflict

+

The server encountered a conflict fulfilling the request.

+

This status code indicates that the resource the client is attempting to create already exists, or that the update operation requested cannot be completed due to a conflict.

+

410

+

Gone

+

The resource requested by the client no longer exists.

+

This status code indicates that the requested resource has been permanently deleted.

+

411

+

Length Required

+

The server refuses to process the request without a defined Content-Length.

+

412

+

Precondition Failed

+

The server did not satisfy one of the preconditions set by the requester in the request.

+

413

+

Request Entity Too Large

+

The server refused the request because the request was too large. The server may close the connection to prevent the client from continuously sending the request. If the server is only temporarily unable to process the request, a response message with Retry-After will be included.

+

414

+

Request URI Too Long

+

The URI requested by the client is too long for the server to process.

+

415

+

Unsupported Media Type

+

The server cannot process the media format attached to the request.

+

416

+

Requested Range Not Satisfiable

+

The range requested by the client is invalid.

+

417

+

Expectation Failed

+

The expectation given in the request's Expect header could not be met.

+

422

+

Unprocessable Entity

+

The request format is correct, but cannot be responded to due to semantic errors.

+

429

+

Too Many Requests

+

The client has sent more requests than the rate limit allowed within a given amount of time, or the server has received more requests than it is able to process within a given amount of time. In this case, the client should repeat requests after the time specified in the Retry-After header of the response expires.

+

500

+

Internal Server Error

+

The server can be accessed by the request, but it cannot understand the user's request.

+

501

+

Not Implemented

+

The server does not support the requested function and cannot fulfill the request.

+

502

+

Bad Gateway

+

As a gateway or proxy, the server has received an invalid request from a remote server.

+

503

+

Service Unavailable

+

The requested service is invalid.

+

Modify the request directly and do not attempt to retry it.

+

504

+

Gateway Timeout

+

The request cannot be fulfilled within the given duration. The client will only receive this response when a timeout parameter is specified for the request.

+

505

+

HTTP Version Not Supported

+

The server does not support the requested version of the HTTPS protocol and cannot fulfill the request.

+
+
+
+
+ +
+ diff --git a/docs/ocr/api-ref/ocr_03_0130.html b/docs/ocr/api-ref/ocr_03_0130.html new file mode 100644 index 00000000..b18fc2e1 --- /dev/null +++ b/docs/ocr/api-ref/ocr_03_0130.html @@ -0,0 +1,49 @@ + + +

Obtaining the Project ID

+

A project ID or project name is required in some API requests. You need to obtain the project ID and name before calling an API.

+

Obtaining a Project ID and Name from the Console

  1. Log in to the management console.
  2. In the upper right corner of the page, click the username and choose My Credentials from the drop-down list. The My Credentials page is displayed.
  3. In the project list, view Project ID and Project Name.
    Figure 1 Viewing the project ID and name
    +

    If there are multiple projects, unfold the target region and obtain the project ID from the Project ID column.

    +
+
+

Obtaining a Project ID by Calling an API

You can obtain a project ID by calling the API used to query project information based on the specified criteria.

+

The API for obtaining a project ID is GET https://{iam-endpoint}/v3/projects. {iam-endpoint} indicates the endpoint of IAM, which can be obtained from Endpoint. For details about how to obtain the IAM endpoint, see Authentication.

+

The following is an example response. For example, if OCR is deployed in the xxx region, the value of name in the response body is xxx. The value of id in projects is the project ID. If there are multiple projects, unfold the target region and obtain the project ID from the Project ID column.

+
{ 
+    "projects": [ 
+        { 
+            "domain_id": "65382450e8f64ac0870cd180d14exxxx", 
+            "is_domain": false, 
+            "parent_id": "65382450e8f64ac0870cd180d14exxxx", 
+            "name": "xxx",    // Project name, which is the name of the deployment region.
+            "description": "", 
+            "links": { 
+                "next": null, 
+                "previous": null, 
+                "self": "https://www.example.com/v3/projects/a4a5d4098fb4474fa22cd05f897dxxxx" 
+            }, 
+            "id": "a4a5d4098fb4474fa22cd05f897dxxxx",    // Project ID
+            "enabled": true 
+        } 
+    ], 
+    "links": { 
+        "next": null, 
+        "previous": null, 
+        "self": "https://www.example.com/v3/projects" 
+    } 
+}
+
+
+
+ +
+ + + \ No newline at end of file diff --git a/docs/ocr/api-ref/public_sys-resources/caution_3.0-en-us.png b/docs/ocr/api-ref/public_sys-resources/caution_3.0-en-us.png new file mode 100644 index 0000000000000000000000000000000000000000..60f60762138fe7d98fa081415cf26a4943897779 GIT binary patch literal 2752 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 literal 0 HcmV?d00001 diff --git a/docs/ocr/api-ref/public_sys-resources/icon-arrowdn.gif b/docs/ocr/api-ref/public_sys-resources/icon-arrowdn.gif new file mode 100644 index 0000000000000000000000000000000000000000..379428032932289326e52c2772bd90ba3d88b906 GIT binary patch literal 1887 zcmZ?wbhEHbCgqow z*eU^C3h_d20o>TUVm+{T^pf*)^(zt!^bPe4Kwg3=^!3HBG&dKny0|1L72#g21{a4^ z7NqJ2r55Lx7A2Jm>Ih`8X1|p zSh~8p7&*iAy5uL9=BDPA!1Sgd^t#~G3rY&P1wfl!Qj0RnQd8WD@^clyUbf1_?G{Iz z=0WwQ;C71>PQCg-$LND17Ac}(Lcr7mV#1RxkONQnsd>QEUIa|mjQ{`r{qy_R&mZ5v zef{$J)5j0*-@SeF`qj%9&!0Vg^7zri2lwyYy>t84%^TORUA=Po(!~qs&z(JU`qar2 z$B!L7a`@1}1N-;w-Lrew&K=vgZQZhY)5ZeMTG_VdAT{+S(zE> zX{jm6Nr?&Zaj`McQIQehVWA3>*p!%p5Wn0u7E$th{n6D>ft^YU5&dnB%c=(a~-RV>2EO25SIA CZ-yWM literal 0 HcmV?d00001 diff --git a/docs/ocr/api-ref/public_sys-resources/icon-arrowrt.gif b/docs/ocr/api-ref/public_sys-resources/icon-arrowrt.gif new file mode 100644 index 0000000000000000000000000000000000000000..6aaaa11c23e919c4798d7dcd2b1ae98dd35dd316 GIT binary patch literal 1890 zcmZ?wbhEHb7yetOgf{ zR2HP_2c;J0mlh?b0+lO+tSYc_E=o--$uA1Y&(DE{Vn9ZINq%ugeu08>u$h8JcxGNo zetEGbSiP^Wm1kaYNn&1ds;7&s63_&_%*+%k11Cod14Ab>6ALqQLqk^=3j-5FHzP|& zBUd9gQwvj9m|mCsATTyHM;rzL?XHK6w zdE)r7qel)OI(T6JzP)>P@7lRz`?jrHHgDRvVg0(bYgVsXxnlXUrArnsTDV~Tyt#8` z&zd=7`n0K2CQq6;p}()Ur@O1OqrI)QrMaoGp}wxRrn;)KqP(oMq`0WCAU`iRCp#-M zBRwrOB{?ZEAwDiPCORrIB0MZKBseHAz~9f;$J@)(!`;o*#o5Wx!QRf+#@fo#!raW% z#MsEtKwnQ+M_Wr%LtRZ(MOjHvL0(Q)Mp{ZzLR?H#L|8~rfS-?-hntI&gPo0)g_((w zfkE*n3y@@B&;b#k`jUY|nSq%>!ec`MLnAA%oR7zc2TpB#@>)|YCO&lN;uMU!b7Eqm H1A{dHTIz>f literal 0 HcmV?d00001 diff --git a/docs/ocr/api-ref/public_sys-resources/icon-caution.gif b/docs/ocr/api-ref/public_sys-resources/icon-caution.gif new file mode 100644 index 0000000000000000000000000000000000000000..079c79b263f4b48089f3b3256154c73e7699593f GIT binary patch literal 1086 zcmW+#YfRQ<6hA3LZMyP?V}KhnEtF{Q4vGxS52AozEVM85nq$#%tv8gRF!3GhgM?_) zd5Luv3SKrXFTGCpn$y>EMGZQ&sWI^~+e%qWysRPK%BSD+f4-fabAGq;|Cf|4nO{(o zMH%#n$oXf^sdM5SJ4e1UbEeM389O82RCB6M#VI=_KP%=$orn{5LVlIau{svV?3jS$ z$Q-F7am0>L02|Q2!ZN1G^Z2J`V#a3VX;G<~iYc3tSAnLeiI}hnc~O{UH5OwwCTPT} zks65+8-W$70S3`f30dfY7}$UY7M95y@-?2QvMPChphYF3!YbtLLIs*E%B)Oq4^fy^ z5+zoGJ>&tI*hU=i4-s$()c}KNsKh9AfEd_-1{V3`d>b_$i;xcz{y>Y0S(uP3>_P>a zLM((Fku(B;E{r2+xJ8u612VCVIG_oJ;Sj0;2GQ7rEa(6+umMf}M1C4=)Odu8AxQWG zEh;Aearj(=d;4Z^LLYN*6+asU?Nbl3^Q%D|{s@6Xj}(aZHwkoj-~bw*1FnSd;0aX! zUW<-TPD&b;6s;@zw7K~4mF9cDuK&BQ;b_N-Cj%R=CnEjde9%~1kk}vYY^@mTTNm%F z?mbrf*~d#iX;?ITDf(MHQdK;&p(ek&e9qe?*&A0E)mG(1s`J*pn^#ttId4vCXjV$j zj464u)2F9Q$V#0!dHk4(FDB#D&wP^f0*q1)G?4!%Xe>;ROD~Oee-}xfJUd+aa_0AK zFP$vgR2te>+%}b$hVw&Ni`yT>F5LNRM@_utk68Piwi5??BLBpCcb8mx|3c*1x!xZJ zKU!7(#h8s(^x)5*w=Z0K{=a9#qeoHU|0&%MiU0rr literal 0 HcmV?d00001 diff --git a/docs/ocr/api-ref/public_sys-resources/icon-danger.gif b/docs/ocr/api-ref/public_sys-resources/icon-danger.gif new file mode 100644 index 0000000000000000000000000000000000000000..079c79b263f4b48089f3b3256154c73e7699593f GIT binary patch literal 1086 zcmW+#YfRQ<6hA3LZMyP?V}KhnEtF{Q4vGxS52AozEVM85nq$#%tv8gRF!3GhgM?_) zd5Luv3SKrXFTGCpn$y>EMGZQ&sWI^~+e%qWysRPK%BSD+f4-fabAGq;|Cf|4nO{(o zMH%#n$oXf^sdM5SJ4e1UbEeM389O82RCB6M#VI=_KP%=$orn{5LVlIau{svV?3jS$ z$Q-F7am0>L02|Q2!ZN1G^Z2J`V#a3VX;G<~iYc3tSAnLeiI}hnc~O{UH5OwwCTPT} zks65+8-W$70S3`f30dfY7}$UY7M95y@-?2QvMPChphYF3!YbtLLIs*E%B)Oq4^fy^ z5+zoGJ>&tI*hU=i4-s$()c}KNsKh9AfEd_-1{V3`d>b_$i;xcz{y>Y0S(uP3>_P>a zLM((Fku(B;E{r2+xJ8u612VCVIG_oJ;Sj0;2GQ7rEa(6+umMf}M1C4=)Odu8AxQWG zEh;Aearj(=d;4Z^LLYN*6+asU?Nbl3^Q%D|{s@6Xj}(aZHwkoj-~bw*1FnSd;0aX! zUW<-TPD&b;6s;@zw7K~4mF9cDuK&BQ;b_N-Cj%R=CnEjde9%~1kk}vYY^@mTTNm%F z?mbrf*~d#iX;?ITDf(MHQdK;&p(ek&e9qe?*&A0E)mG(1s`J*pn^#ttId4vCXjV$j zj464u)2F9Q$V#0!dHk4(FDB#D&wP^f0*q1)G?4!%Xe>;ROD~Oee-}xfJUd+aa_0AK zFP$vgR2te>+%}b$hVw&Ni`yT>F5LNRM@_utk68Piwi5??BLBpCcb8mx|3c*1x!xZJ zKU!7(#h8s(^x)5*w=Z0K{=a9#qeoHU|0&%MiU0rr literal 0 HcmV?d00001 diff --git a/docs/ocr/api-ref/public_sys-resources/icon-huawei.gif b/docs/ocr/api-ref/public_sys-resources/icon-huawei.gif new file mode 100644 index 0000000000000000000000000000000000000000..a31d60f895af919d33855217ca02daf4093136d7 GIT binary patch literal 2767 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 GE&l)<3Z_>8 literal 0 HcmV?d00001 diff --git a/docs/ocr/api-ref/public_sys-resources/icon-notice.gif b/docs/ocr/api-ref/public_sys-resources/icon-notice.gif new file mode 100644 index 0000000000000000000000000000000000000000..409070650a49518feb1624c624d814c3bfa63d2e GIT binary patch literal 962 zcmb7D&r8&C5S<{wSd_qn6)U)w5LOaRh!N}_*49lD)S!dZp@M<3gPIX|@UR9-fz+X3 zAaT9)OY{xZtO-;RC85Vab;JEUNIMS5f^r$7-e%-XK`j{0+N$CsgpRd6B1wp z8dw-cH^rU^H4`&7qgabf)l^K`l!66{q9$U(CKRO5%W5pfY)s&YQ6n`HBR0ZTum%`N zgC%I8hQ+`JG_WvCAt-W$sIn@BKCDG1qQWW^a=`*c7G+i@s0S(ZDv1&+K_2`7O-#cM z=m!ZX1Z#kSG+3e)Jg^wpfCd(Yb5TZ)U=a!DwsG z)Z`|1ejMK4ap%CHj;%+>T6=D++5I=uBbQ$fZ48cf{hV1}9&Njl-I}i7e0#6Hdug@s zsr-57_=gLr&9Ros$k}}M>tJ77=hEJ}iPaZ%8|P+gUbS|Oj}5I{|5nZZc)C1$e*Rj` d`09hYXJ4M@PhCx)dHK8WZo1*|*q+^V@*ncduk8Q; literal 0 HcmV?d00001 diff --git a/docs/ocr/api-ref/public_sys-resources/icon-tip.gif b/docs/ocr/api-ref/public_sys-resources/icon-tip.gif new file mode 100644 index 0000000000000000000000000000000000000000..c47bae05c9fd17c02a851d96cfac67bf194498d8 GIT binary patch literal 879 zcmchWKWmj?48@OdDOZPr)a61!OE4yGD)salg#|^Ix$qIEF#uk)V>D{95e^!2r`i+9t# zTMu5YtUcd+@#gp0tDE;9ug>oLIzL$6dOx4-t#2PKExu1KulwoYeD?Os#mVO%AMWih HO|EMGZQ&sWI^~+e%qWysRPK%BSD+f4-fabAGq;|Cf|4nO{(o zMH%#n$oXf^sdM5SJ4e1UbEeM389O82RCB6M#VI=_KP%=$orn{5LVlIau{svV?3jS$ z$Q-F7am0>L02|Q2!ZN1G^Z2J`V#a3VX;G<~iYc3tSAnLeiI}hnc~O{UH5OwwCTPT} zks65+8-W$70S3`f30dfY7}$UY7M95y@-?2QvMPChphYF3!YbtLLIs*E%B)Oq4^fy^ z5+zoGJ>&tI*hU=i4-s$()c}KNsKh9AfEd_-1{V3`d>b_$i;xcz{y>Y0S(uP3>_P>a zLM((Fku(B;E{r2+xJ8u612VCVIG_oJ;Sj0;2GQ7rEa(6+umMf}M1C4=)Odu8AxQWG zEh;Aearj(=d;4Z^LLYN*6+asU?Nbl3^Q%D|{s@6Xj}(aZHwkoj-~bw*1FnSd;0aX! zUW<-TPD&b;6s;@zw7K~4mF9cDuK&BQ;b_N-Cj%R=CnEjde9%~1kk}vYY^@mTTNm%F z?mbrf*~d#iX;?ITDf(MHQdK;&p(ek&e9qe?*&A0E)mG(1s`J*pn^#ttId4vCXjV$j zj464u)2F9Q$V#0!dHk4(FDB#D&wP^f0*q1)G?4!%Xe>;ROD~Oee-}xfJUd+aa_0AK zFP$vgR2te>+%}b$hVw&Ni`yT>F5LNRM@_utk68Piwi5??BLBpCcb8mx|3c*1x!xZJ zKU!7(#h8s(^x)5*w=Z0K{=a9#qeoHU|0&%MiU0rr literal 0 HcmV?d00001 diff --git a/docs/ocr/api-ref/public_sys-resources/imageclose.gif b/docs/ocr/api-ref/public_sys-resources/imageclose.gif new file mode 100644 index 0000000000000000000000000000000000000000..3a3344af4afdeedcbd8d49c6739d1e100142841b GIT binary patch literal 1238 zcmZ?wbhEHb6krfwSj57xcJ11&Tet4ryZ7kPqyPW^XMh34|J)J20SYdOC5b@V#=fE; zF*!T6L?J0PJu}Z%>HY5gN(z}Nwo2iqz6QPp&Z!xh9#uuD!Bu`C$yM3OmMKd1b_zBX zRu#Dgxv3?I3Kh9IdBs*0wn~X9`AMl(KsHENUr7P1q$Jx`$q^)>0J76LzbI9~RL@v9 z*}%|H!OTq0(8Sct%uq+c$iUD@-vEfrbPY|cOwFu}%oU(O320kUN}5%WiyPD~AkS7Q zqokz3N?*Ucyj-u`STDaQUEk2s(h_8bk&!M?g>G?WUP)qwZeFo6%mkOz;^d;tf|AVq zJOz-6iAnjTCALaHmqNUdTj1*pH#o0Y59}emIIA zz^b}9q_QAYKPa_0zqBYh6{uVprWqJ^_$>k{1iHq`zbF$JDTz5Q`N^fZsd*)yF1AWQ z8NHOu6f0*7Co?Al3m0=|Hz!wTLqkUsXG>=zLt`g5XA?&!BSV-O*z_71I9eK+yO_E; zSy&hvx;k5$nmSv$xwx4dyBfNhxVXUddgc|EB<3Zj!tBii+6&cdf>*DVb5UwyNq$jC zetr%t1q5W|m*f{`1N{AbeZ0LqJ>1<~U7Vd99qjFFZLF;!Y#3Q(W~w5=#5%__*n4QdyV zXRDM^Qc_^0uU}qXu2*iXmtT~wZ)j<02{OaTNEfI=x41H|B(Xv_uUHvof=g;~a#3bM zNoIbY0?5R~r2NtnTP2`NAzsKWfE$}vtOxdvUUGh}ennz|zM-B0$V)JVzP|XC=H|jx z7ncO3BHWAB;NpiyW)Z+ZoqU2Pda%GTJ1y;^Qsfi`|MIrh5Ij~R+$jC3rFV4s> zP;d@5Q_u*{%uC5HFV+OB_w}{%%quQQ%u7!7bg@+enxL1NnPO#X>1=9lW@_r@WZ`IN z=<4ibV(4aRVPt0NVq{?MV&MeS>yn>bnwy$e0@Is<&})WMFDNPG765H_NiE7OOHFYr z%Fk5*d)X=zw_A*Hng`XJg4-=7IQ8lS9itD5Sfq%C2?0|NhzU=&Kn^_Nr{)1udl4{M zGyebg_s{QNKYx7x_Vvr>Pai+LfA{vy>sK#dJb(7|$>T>4AKbrp_s;EGH*Z|OcJ<2T zOBXMkKX>-b=~E|996xsS$l*f=5A5H!chBx!J9li~wsp(qO&d3?U$=J6>QyUOEMK;C z$>K!|7tEhGch2ltGiOYnHg(G6NfRgZ_x1L4cXf8Ox3#u3H#IiY*VWckS5;P&mz9V~xOjJZzNKk;EkC%s= zi<5($jg^I&iIIUp@h1zAWM$9+l@y?Ign`*MLgebdMh%7=#f^GV`6oq~%OupNBpS~X u5MOie_{@!7oGG@??#=tAc88xep;u>9v^MK*8TL~W837UsORumnSOWmkrlE=e literal 0 HcmV?d00001 diff --git a/docs/ocr/api-ref/public_sys-resources/imagemax.gif b/docs/ocr/api-ref/public_sys-resources/imagemax.gif new file mode 100644 index 0000000000000000000000000000000000000000..99c07dc2570d75fa74b38e02474edaa068eac3cd GIT binary patch literal 1267 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 CuQ@6J literal 0 HcmV?d00001 diff --git a/docs/ocr/api-ref/public_sys-resources/note_3.0-en-us.png b/docs/ocr/api-ref/public_sys-resources/note_3.0-en-us.png new file mode 100644 index 0000000000000000000000000000000000000000..57a0e1f53377b28fd80ceb393b035f8d9b8b392a GIT binary patch literal 1080 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