gpt4 book ai didi

java - 在请求 Spring Boot java 中识别作为多部分文件出现的相同图像

转载 作者:行者123 更新时间:2023-12-01 17:38:52 25 4
gpt4 key购买 nike

我正在使用 spring boot 创建一个应用程序,我正在其中对图像进行 OCR。我的请求要求提供多部分文件。当我获得多部分文件时,我需要知道我是否已经处理过相同的图像。

我创建了 MultipartEntity 及其哈希值。我相信下次如果有相同的文件出现。我将创建哈希值并进行比较。

当我尝试这样做时。我发现它的哈希总是不同的。有没有一种方法可以让我识别出该图像之前是 OCRed 的,这样我就可以仅根据哈希值来检索结果。

Request params as file in request:-
@RequestParam("file") MultipartFile file

这就是我尝试创建哈希的方式:

  FileBody fileBody = new FileBody(new File(fileName));
MultipartEntity multipartEntity = new MultipartEntity(HttpMultipartMode.STRICT);
multipartEntity.addPart("file", fileBody);
String requestBodyHash = PanUtil.getHashFromRequestBody(multipartEntity.toString());

public static String getHashFromRequestBody(String req) {

String requestBodyHash = null;
try {
requestBodyHash = generateSha2FromPayload(req);
} catch (NoSuchAlgorithmException | URISyntaxException e) {
log.error("Exception occured while creating hash from request {}", e);
throw new HttpClientErrorException(HttpStatus.BAD_REQUEST, e.getMessage());
}
return requestBodyHash;
}

public static String generateSha2FromPayload(String json)
throws URISyntaxException, NoSuchAlgorithmException {

MessageDigest md = MessageDigest.getInstance("SHA-256");
byte[] digest = md.digest(json.getBytes(StandardCharsets.UTF_8));
return toHexString(digest);
}

最佳答案

我使用下面的代码来查找图像的相同哈希值。

  public static String toHexString(byte[] hash) {

// Convert byte array into signum representation
BigInteger number = new BigInteger(1, hash);

// Convert message digest into hex value
StringBuilder hexString = new StringBuilder(number.toString(16));

// Pad with leading zeros
while (hexString.length() < 32) {
hexString.insert(0, '0');
}
return hexString.toString();
}

调用此函数。这将始终给出相同的十六进制。

toHexString(file.getBytes())

关于java - 在请求 Spring Boot java 中识别作为多部分文件出现的相同图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60997760/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com