RecognizeAllText.java 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. package com.malk.kabeiyi.util;
  2. import cn.hutool.json.JSONObject;
  3. import com.aliyun.auth.credentials.Credential;
  4. import com.aliyun.auth.credentials.provider.StaticCredentialProvider;
  5. import com.aliyun.core.http.HttpClient;
  6. import com.aliyun.core.http.HttpMethod;
  7. import com.aliyun.core.http.ProxyOptions;
  8. import com.aliyun.httpcomponent.httpclient.ApacheAsyncHttpClientBuilder;
  9. import com.aliyun.sdk.service.ocr_api20210707.models.*;
  10. import com.aliyun.sdk.service.ocr_api20210707.*;
  11. import com.google.gson.Gson;
  12. import darabonba.core.RequestConfiguration;
  13. import darabonba.core.client.ClientOverrideConfiguration;
  14. import darabonba.core.utils.CommonUtil;
  15. import darabonba.core.TeaPair;
  16. import org.springframework.beans.factory.annotation.Value;
  17. //import javax.net.ssl.KeyManager;
  18. //import javax.net.ssl.X509TrustManager;
  19. import java.net.InetSocketAddress;
  20. import java.nio.file.Files;
  21. import java.time.Duration;
  22. import java.util.*;
  23. import java.util.concurrent.CompletableFuture;
  24. import java.io.*;
  25. import java.util.stream.Collectors;
  26. public class RecognizeAllText {
  27. /*@Value("${aliyun.accessKeyId}")
  28. private static String accessKeyId;
  29. @Value("${aliyun.accessKeySecret}")
  30. private static String accessKeySecret;*/
  31. public static String recognizeText(String filePath,String type,String accessKeyId,String accessKeySecret) throws Exception {
  32. if (!type.equals("Advanced") && !type.equals("Table")){
  33. return null;
  34. }
  35. StaticCredentialProvider provider = StaticCredentialProvider.create(Credential.builder()
  36. .accessKeyId(accessKeyId)
  37. .accessKeySecret(accessKeySecret)
  38. // .securityToken(System.getenv("ALIBABA_CLOUD_SECURITY_TOKEN")) // use STS token
  39. .build());
  40. // Configure the Client
  41. AsyncClient client = AsyncClient.builder()
  42. .region("cn-hangzhou") // Region ID
  43. //.httpClient(httpClient) // Use the configured HttpClient, otherwise use the default HttpClient (Apache HttpClient)
  44. .credentialsProvider(provider)
  45. //.serviceConfiguration(Configuration.create()) // Service-level configuration
  46. // Client-level configuration rewrite, can set Endpoint, Http request parameters, etc.
  47. .overrideConfiguration(
  48. ClientOverrideConfiguration.create()
  49. // Endpoint 请参考 https://api.aliyun.com/product/ocr-api
  50. .setEndpointOverride("ocr-api.cn-hangzhou.aliyuncs.com")
  51. //.setConnectTimeout(Duration.ofSeconds(30))
  52. )
  53. .build();
  54. // Parameter settings for API request
  55. InputStream bodyStream = Files.newInputStream(new File(filePath).toPath());
  56. RecognizeAllTextRequest recognizeAllTextRequest = RecognizeAllTextRequest.builder()
  57. .type(type)
  58. .body(bodyStream)
  59. // Request-level configuration rewrite, can set Http request parameters, etc.
  60. // .requestConfiguration(RequestConfiguration.create().setHttpHeaders(new HttpHeaders()))
  61. .build();
  62. // Asynchronously get the return value of the API request
  63. CompletableFuture<RecognizeAllTextResponse> response = client.recognizeAllText(recognizeAllTextRequest);
  64. // Synchronously get the return value of the API request
  65. RecognizeAllTextResponse resp = response.get();
  66. String jsonString = new Gson().toJson(resp);
  67. JSONObject jsonObject = new JSONObject(jsonString);
  68. Map<String, Object> map = jsonObject.entrySet().stream()
  69. .collect(Collectors.toMap(
  70. Map.Entry::getKey,
  71. Map.Entry::getValue
  72. ));
  73. Map body = (Map) map.get("body");
  74. Map data = (Map) body.get("data");
  75. String content = String.valueOf(data.get("content"));
  76. System.out.println(content);
  77. // Asynchronous processing of return values
  78. /*response.thenAccept(resp -> {
  79. System.out.println(new Gson().toJson(resp));
  80. }).exceptionally(throwable -> { // Handling exceptions
  81. System.out.println(throwable.getMessage());
  82. return null;
  83. });*/
  84. // Finally, close the client
  85. client.close();
  86. return content;
  87. }
  88. }