计算机视觉快速入门不适用于Java



我是计算机视觉的新手,我正试图实现以下(示例),但它总是向我发送相同的错误:

出错了:无法从…中提取操作id操作位置

/**
* OCR with READ : Performs a Read Operation on a local image
* @param client instantiated vision client
* @param localFilePath local file path from which to perform the read operation against
*/
private static void ReadFromFile(ComputerVisionClient client) {
System.out.println("-----------------------------------------------");

String localFilePath = "C:\main\resources\file.pdf";
System.out.println("Read with local file: " + localFilePath);

try {
File rawImage = new File(localFilePath);
byte[] localImageBytes = Files.readAllBytes(rawImage.toPath());
// Cast Computer Vision to its implementation to expose the required methods
ComputerVisionImpl vision = (ComputerVisionImpl) client.computerVision();
// Read in remote image and response header
ReadInStreamHeaders responseHeader =
vision.readInStreamWithServiceResponseAsync(localImageBytes, null, null)
.toBlocking()
.single()
.headers();

String operationLocation = responseHeader.operationLocation();
System.out.println("Operation Location:" + operationLocation);
getAndPrintReadResult(vision, operationLocation);
} catch (Exception e) {
System.out.println(e.getMessage());
e.printStackTrace();
}
}
/**
* Polls for Read result and prints results to console
* @param vision Computer Vision instance
* @return operationLocation returned in the POST Read response header
*/
private static void getAndPrintReadResult(ComputerVision vision, String operationLocation) throws InterruptedException {
System.out.println("Polling for Read results ...");
// Extract OperationId from Operation Location
String operationId = extractOperationIdFromOpLocation(operationLocation);
boolean pollForResult = true;
ReadOperationResult readResults = null;
while (pollForResult) {
// Poll for result every second
Thread.sleep(1000);
readResults = vision.getReadResult(UUID.fromString(operationId));
// The results will no longer be null when the service has finished processing the request.
if (readResults != null) {
// Get request status
OperationStatusCodes status = readResults.status();
if (status == OperationStatusCodes.FAILED || status == OperationStatusCodes.SUCCEEDED) {
pollForResult = false;
}
}
}

// Print read results, page per page
for (ReadResult pageResult : readResults.analyzeResult().readResults()) {
System.out.println("");
System.out.println("Printing Read results for page " + pageResult.page());
StringBuilder builder = new StringBuilder();
for (Line line : pageResult.lines()) {
builder.append(line.text());
builder.append("n");
}
System.out.println(builder.toString());
}
}

//The error marks it in this method since it cannot extract the operation id

/**
* Extracts the OperationId from a Operation-Location returned by the POST Read operation
* @param operationLocation
* @return operationId
*/
private static String extractOperationIdFromOpLocation(String operationLocation) {
if (operationLocation != null && !operationLocation.isEmpty()) {
String[] splits = operationLocation.split("/");
if (splits != null && splits.length > 0) {
return splits[splits.length - 1];
}
}
throw new IllegalStateException("Something went wrong: Couldn't extract the operation id from the operation location");
}

如果你能帮我看看我的错误是什么或我做错了什么,我将不胜感激。

似乎你只遵循了快速入门的一部分。在此之前,还应该设置环境并设置主方法、订阅ID和密钥。请遵循整个文档:https://learn.microsoft.com/en-us/azure/cognitive-services/computer-vision/quickstarts-sdk/client-library?tabs=visual-studio&pivots=programming-language-java

最新更新