RecognizeTableResult.cc 3.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. /*
  2. * Copyright 2009-2017 Alibaba Cloud All rights reserved.
  3. *
  4. * Licensed under the Apache License, Version 2.0 (the "License");
  5. * you may not use this file except in compliance with the License.
  6. * You may obtain a copy of the License at
  7. *
  8. * http://www.apache.org/licenses/LICENSE-2.0
  9. *
  10. * Unless required by applicable law or agreed to in writing, software
  11. * distributed under the License is distributed on an "AS IS" BASIS,
  12. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  13. * See the License for the specific language governing permissions and
  14. * limitations under the License.
  15. */
  16. #include <alibabacloud/ocr/model/RecognizeTableResult.h>
  17. #include <json/json.h>
  18. using namespace AlibabaCloud::Ocr;
  19. using namespace AlibabaCloud::Ocr::Model;
  20. RecognizeTableResult::RecognizeTableResult() :
  21. ServiceResult()
  22. {}
  23. RecognizeTableResult::RecognizeTableResult(const std::string &payload) :
  24. ServiceResult()
  25. {
  26. parse(payload);
  27. }
  28. RecognizeTableResult::~RecognizeTableResult()
  29. {}
  30. void RecognizeTableResult::parse(const std::string &payload)
  31. {
  32. Json::Reader reader;
  33. Json::Value value;
  34. reader.parse(payload, value);
  35. setRequestId(value["RequestId"].asString());
  36. auto dataNode = value["Data"];
  37. if(!dataNode["FileContent"].isNull())
  38. data_.fileContent = dataNode["FileContent"].asString();
  39. auto allTablesNode = dataNode["Tables"]["Table"];
  40. for (auto dataNodeTablesTable : allTablesNode)
  41. {
  42. Data::Table tableObject;
  43. auto allTableRowsNode = dataNodeTablesTable["TableRows"]["TableRow"];
  44. for (auto dataNodeTablesTableTableRowsTableRow : allTableRowsNode)
  45. {
  46. Data::Table::TableRow tableRowsObject;
  47. auto allTableColumnsNode = dataNodeTablesTableTableRowsTableRow["TableColumns"]["TableColumn"];
  48. for (auto dataNodeTablesTableTableRowsTableRowTableColumnsTableColumn : allTableColumnsNode)
  49. {
  50. Data::Table::TableRow::TableColumn tableColumnsObject;
  51. if(!dataNodeTablesTableTableRowsTableRowTableColumnsTableColumn["EndRow"].isNull())
  52. tableColumnsObject.endRow = std::stoi(dataNodeTablesTableTableRowsTableRowTableColumnsTableColumn["EndRow"].asString());
  53. if(!dataNodeTablesTableTableRowsTableRowTableColumnsTableColumn["EndColumn"].isNull())
  54. tableColumnsObject.endColumn = std::stoi(dataNodeTablesTableTableRowsTableRowTableColumnsTableColumn["EndColumn"].asString());
  55. if(!dataNodeTablesTableTableRowsTableRowTableColumnsTableColumn["Width"].isNull())
  56. tableColumnsObject.width = std::stoi(dataNodeTablesTableTableRowsTableRowTableColumnsTableColumn["Width"].asString());
  57. if(!dataNodeTablesTableTableRowsTableRowTableColumnsTableColumn["Height"].isNull())
  58. tableColumnsObject.height = std::stoi(dataNodeTablesTableTableRowsTableRowTableColumnsTableColumn["Height"].asString());
  59. if(!dataNodeTablesTableTableRowsTableRowTableColumnsTableColumn["StartRow"].isNull())
  60. tableColumnsObject.startRow = std::stoi(dataNodeTablesTableTableRowsTableRowTableColumnsTableColumn["StartRow"].asString());
  61. if(!dataNodeTablesTableTableRowsTableRowTableColumnsTableColumn["StartColumn"].isNull())
  62. tableColumnsObject.startColumn = std::stoi(dataNodeTablesTableTableRowsTableRowTableColumnsTableColumn["StartColumn"].asString());
  63. auto allTexts = value["Texts"]["Text"];
  64. for (auto value : allTexts)
  65. tableColumnsObject.texts.push_back(value.asString());
  66. tableRowsObject.tableColumns.push_back(tableColumnsObject);
  67. }
  68. tableObject.tableRows.push_back(tableRowsObject);
  69. }
  70. auto allHead = value["Head"]["Head"];
  71. for (auto value : allHead)
  72. tableObject.head.push_back(value.asString());
  73. auto allTail = value["Tail"]["Tail"];
  74. for (auto value : allTail)
  75. tableObject.tail.push_back(value.asString());
  76. data_.tables.push_back(tableObject);
  77. }
  78. }
  79. RecognizeTableResult::Data RecognizeTableResult::getData()const
  80. {
  81. return data_;
  82. }