Я хочу отправить на OCR изображение с локального компьютера, а не какой-нибудь удаленный URL с изображением там (в этом случае отлично работает).Но проблема в том, что я не знаю, как правильно построить полезную нагрузку из нескольких частей.Моя полезная нагрузка должна выглядеть так, как описано ниже.
Это то, что описано в документации API .Декодируйте данные изображения, данные непосредственно в составных / связанных данных.Порядок важен, и первая часть должна быть JSON, которая говорит ему, какой механизм OCR использовать.Схема для этого JSON документирована в конечной точке /ocr
.Параметр img_url
JSON в этом случае будет игнорироваться.
Вложение изображения должно быть частью секунда , и оно должно работать с любым типом содержимого изображения (например, image /PNG, изображения / JPG, и т. д.).
Request (multipart/related; boundary=---BOUNDARY)
-----BOUNDARY
Content-Type: application/json
{"engine":"tesseract"}
-----BOUNDARY
-----BOUNDARY
Content-Disposition: attachment;
Content-Type: image/png
filename="attachment.txt".
PNGDATA.........
-----BOUNDARY
Вот что я пробовал.Для выполнения многочастного / связанного запроса я использую org.apache.httpcomponents
CloseableHttpClient httpClient = HttpClients.createDefault();
MultipartEntityBuilder multipartEntityBuilder =
MultipartEntityBuilder.create().setBoundary(BOUNDARY).setContentType(ContentType.APPLICATION_JSON).addTextBody("engine", "tesseract")
.setBoundary(BOUNDARY).setBoundary(BOUNDARY);
multipartEntityBuilder.addBinaryBody("file_upload", new File(fileTextPath), ContentType.create(CONTENT_TYPE), fileTextPath).setBoundary(BOUNDARY);
HttpEntity entity = multipartEntityBuilder.build();
HttpPost httpPost = new HttpPost(URL);
httpPost.setHeader(HttpHeaders.CONTENT_TYPE, CONTENT_TYPE_MULTIPART+";boundary="+BOUNDARY);
httpPost.setEntity(entity);