mindee
Version:
Mindee Client Library for Node.js
36 lines (35 loc) • 1.38 kB
JavaScript
import { MindeeError } from "../../errors/index.js";
import { extractImagesFromPolygon } from "../../image/imageExtractor.js";
import { logger } from "../../logger.js";
/**
* Extracts a single specified crop from a given input source.
* @param inputSource Local input source.
* @param crop Crop to extract.
* @param quality JPEG quality of extracted image.
*/
export async function extractSingleCrop(inputSource, crop, quality) {
return (await extractMultipleCrops(inputSource, [crop], quality))[0];
}
/**
* Extracts a list of crops from a document.
* @param inputSource Local input source.
* @param crops List of crops to extract.
* @param quality JPEG quality of extracted images.
* @return a list of extracted files, as a CropFiles object.
*/
export async function extractMultipleCrops(inputSource, crops, quality) {
if (crops.length === 0) {
throw new MindeeError("No crop indexes provided.");
}
await inputSource.init();
logger.debug("Extracting crops: " + crops.join(", "));
const polygonsByPage = new Map();
for (const crop of crops) {
const pageId = crop.location.page;
if (!polygonsByPage.has(pageId)) {
polygonsByPage.set(pageId, []);
}
polygonsByPage.get(pageId).push(crop.location.polygon);
}
return await extractImagesFromPolygon(inputSource, polygonsByPage, quality);
}