ppu-paddle-ocr
Version:
Lightweight, probably the fastest PaddleOCR SDK in TypeScript. Runs anywhere JavaScript runs: Node.js, Bun, Deno, mobile react-native, web browsers, and browser extensions. Docker & CLI supported. The official SDK is browser-only. Accurate text detection
1 lines • 1.38 kB
JavaScript
let NUM_CHANNELS=3;export function imageToTensor(canvas,width,height,mean,stdDeviation){let ctx=canvas.getContext("2d");let imageData=ctx.getImageData(0,0,width,height);let rgbaData=imageData.data;let channelSize=height*width;let tensor=new Float32Array(NUM_CHANNELS*channelSize);let meanR=mean[0]??0.485;let meanG=mean[1]??0.456;let meanB=mean[2]??0.406;let stdR=stdDeviation[0]??0.229;let stdG=stdDeviation[1]??0.224;let stdB=stdDeviation[2]??0.225;let scaleR=1/(255*stdR);let scaleG=1/(255*stdG);let scaleB=1/(255*stdB);let shiftR=meanR/stdR;let shiftG=meanG/stdG;let shiftB=meanB/stdB;let gOffset=channelSize;let bOffset=channelSize*2;for(let i=0,rgbaIdx=0;i<channelSize;i++,rgbaIdx+=4){let r=rgbaData[rgbaIdx];let g=rgbaData[rgbaIdx+1];let b=rgbaData[rgbaIdx+2];tensor[i]=r*scaleR-shiftR;tensor[gOffset+i]=g*scaleG-shiftG;tensor[bOffset+i]=b*scaleB-shiftB}return tensor}export function tensorToCanvas(tensor,width,height,createCanvas){let canvas=createCanvas(width,height);let ctx=canvas.getContext("2d");let imageData=ctx.createImageData(width,height);let data=imageData.data;let totalPixels=width*height;for(let i=0;i<totalPixels;i++){let probability=tensor[i]||0;let grayValue=Math.round(probability*255);let pixelIdx=i*4;data[pixelIdx]=grayValue;data[pixelIdx+1]=grayValue;data[pixelIdx+2]=grayValue;data[pixelIdx+3]=255}ctx.putImageData(imageData,0,0);return canvas}