Balearica
2 years ago
7 changed files with 282 additions and 6 deletions
@ -0,0 +1,60 @@
@@ -0,0 +1,60 @@
|
||||
<html> |
||||
|
||||
<head> |
||||
<script src="/dist/tesseract.dev.js"></script> |
||||
<style> |
||||
.column { |
||||
float: left; |
||||
width: 20%; |
||||
padding: 5px; |
||||
} |
||||
|
||||
</style> |
||||
</head> |
||||
|
||||
<body> |
||||
<input type="file" id="uploader"> |
||||
|
||||
<div class="row"> |
||||
<div class="column"> |
||||
<p>Input Image</p> |
||||
<img id="imgInput" style="max-width:500px;"> |
||||
</div> |
||||
<div class="column"> |
||||
<p>Rotated, Original Color</p> |
||||
<img id="imgOriginal" style="max-width:500px;"> |
||||
</div> |
||||
<div class="column"> |
||||
<p>Rotated, Grey</p> |
||||
<img id="imgGrey" style="max-width:500px;"> |
||||
</div> |
||||
<div class="column"> |
||||
<p>Rotated, Binary</p> |
||||
<img id="imgBinary" style="max-width:500px;"> |
||||
</div> |
||||
</div> |
||||
|
||||
<script> |
||||
const recognize = async ({ target: { files } }) => { |
||||
document.getElementById("imgInput").src = URL.createObjectURL(files[0]); |
||||
const worker = Tesseract.createWorker({ |
||||
corePath: '/tesseract-core-simd.wasm.js', |
||||
workerPath: "/dist/worker.dev.js" |
||||
}); |
||||
await worker.load(); |
||||
await worker.loadLanguage('eng'); |
||||
await worker.initialize('eng'); |
||||
|
||||
await worker.initialize(); |
||||
const ret = await worker.recognize(files[0], { saveImageOriginal: true, saveImageGrey: true, saveImageBinary: true, rotateAuto: true }) |
||||
document.getElementById("imgOriginal").src = ret.data.imageOriginal; |
||||
document.getElementById("imgGrey").src = ret.data.imageGrey; |
||||
document.getElementById("imgBinary").src = ret.data.imageBinary; |
||||
|
||||
} |
||||
const elm = document.getElementById('uploader'); |
||||
elm.addEventListener('change', recognize); |
||||
</script> |
||||
</body> |
||||
|
||||
</html> |
@ -0,0 +1,5 @@
@@ -0,0 +1,5 @@
|
||||
module.exports = { |
||||
ORIGINAL: 0, |
||||
GREY: 1, |
||||
BINARY: 2, |
||||
}; |
@ -0,0 +1,56 @@
@@ -0,0 +1,56 @@
|
||||
// Copied from https://gist.github.com/jonleighton/958841
|
||||
// Copyright 2011 Jon Leighton, MIT LICENSE
|
||||
|
||||
/* eslint no-bitwise: 0 */ |
||||
module.exports = (arrayBuffer) => { |
||||
let base64 = ''; |
||||
const encodings = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; |
||||
|
||||
const bytes = new Uint8Array(arrayBuffer); |
||||
const { byteLength } = bytes; |
||||
const byteRemainder = byteLength % 3; |
||||
const mainLength = byteLength - byteRemainder; |
||||
|
||||
let a; let b; let c; let |
||||
d; |
||||
let chunk; |
||||
|
||||
// Main loop deals with bytes in chunks of 3
|
||||
for (let i = 0; i < mainLength; i += 3) { |
||||
// Combine the three bytes into a single integer
|
||||
chunk = (bytes[i] << 16) | (bytes[i + 1] << 8) | bytes[i + 2]; |
||||
|
||||
// Use bitmasks to extract 6-bit segments from the triplet
|
||||
a = (chunk & 16515072) >> 18; // 16515072 = (2^6 - 1) << 18
|
||||
b = (chunk & 258048) >> 12; // 258048 = (2^6 - 1) << 12
|
||||
c = (chunk & 4032) >> 6; // 4032 = (2^6 - 1) << 6
|
||||
d = chunk & 63; // 63 = 2^6 - 1
|
||||
|
||||
// Convert the raw binary segments to the appropriate ASCII encoding
|
||||
base64 += encodings[a] + encodings[b] + encodings[c] + encodings[d]; |
||||
} |
||||
|
||||
// Deal with the remaining bytes and padding
|
||||
if (byteRemainder === 1) { |
||||
chunk = bytes[mainLength]; |
||||
|
||||
a = (chunk & 252) >> 2; // 252 = (2^6 - 1) << 2
|
||||
|
||||
// Set the 4 least significant bits to zero
|
||||
b = (chunk & 3) << 4; // 3 = 2^2 - 1
|
||||
|
||||
base64 += `${encodings[a] + encodings[b]}==`; |
||||
} else if (byteRemainder === 2) { |
||||
chunk = (bytes[mainLength] << 8) | bytes[mainLength + 1]; |
||||
|
||||
a = (chunk & 64512) >> 10; // 64512 = (2^6 - 1) << 10
|
||||
b = (chunk & 1008) >> 4; // 1008 = (2^6 - 1) << 4
|
||||
|
||||
// Set the 2 least significant bits to zero
|
||||
c = (chunk & 15) << 2; // 15 = 2^4 - 1
|
||||
|
||||
base64 += `${encodings[a] + encodings[b] + encodings[c]}=`; |
||||
} |
||||
|
||||
return base64; |
||||
}; |
Loading…
Reference in new issue