image-processing.js 1.1 KB

123456789101112131415161718192021222324252627282930313233
  1. #!/usr/bin/env node
  2. const path = require('path');
  3. const fs = require('fs');
  4. const { createWorker } = require('../../');
  5. const [,, imagePath] = process.argv;
  6. const image = path.resolve(__dirname, (imagePath || '../data/meditations.jpg'));
  7. console.log(`Recognizing ${image}`);
  8. // Tesseract.js returns images (imageColor, imageGrey, imageBinary) as strings
  9. // to be used as source tags.
  10. // This function converts to Uint8Array data for saving to disk.
  11. const convertImage = (imageSrc) => {
  12. const data = atob(imageSrc.split(',')[1])
  13. .split('')
  14. .map((c) => c.charCodeAt(0));
  15. return new Uint8Array(data);
  16. }
  17. (async () => {
  18. const worker = await createWorker();
  19. const { data: { imageColor, imageGrey, imageBinary } } = await worker.recognize(image, {rotateAuto: true}, {imageColor: true, imageGrey: true, imageBinary: true});
  20. console.log('Saving intermediate images: imageColor.png, imageGrey.png, imageBinary.png');
  21. fs.writeFileSync('imageColor.png', convertImage(imageColor));
  22. fs.writeFileSync('imageGrey.png', convertImage(imageGrey));
  23. fs.writeFileSync('imageBinary.png', convertImage(imageBinary));
  24. await worker.terminate();
  25. })();