Support more languages
This commit is contained in:
+9
-3
@@ -5,11 +5,11 @@
|
|||||||
* Copyright 2020 Harish.K<harish2704@gmail.com>
|
* Copyright 2020 Harish.K<harish2704@gmail.com>
|
||||||
*/
|
*/
|
||||||
|
|
||||||
function ocrByServer(image) {
|
function ocrByServer(image, opts) {
|
||||||
var data = new FormData();
|
var data = new FormData();
|
||||||
data.append("image", image);
|
data.append("image", image);
|
||||||
return fetch(
|
return fetch(
|
||||||
"./ocr",
|
"./ocr?lang="+opts.lang.join(':'),
|
||||||
{
|
{
|
||||||
method: "POST",
|
method: "POST",
|
||||||
body: data,
|
body: data,
|
||||||
@@ -28,11 +28,17 @@ new Vue({
|
|||||||
currentFileBlob: null,
|
currentFileBlob: null,
|
||||||
isLoading: false,
|
isLoading: false,
|
||||||
ocrOutput: "",
|
ocrOutput: "",
|
||||||
|
availableLangs:[
|
||||||
|
{ label: 'Malayalam', code: 'mal' },
|
||||||
|
{ label: 'English', code: 'eng' },
|
||||||
|
{ label: 'Hindi', code: 'hin' },
|
||||||
|
],
|
||||||
|
selectedLangs:['mal']
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
doOcr: function () {
|
doOcr: function () {
|
||||||
this.isLoading = true;
|
this.isLoading = true;
|
||||||
ocrByServer(this.currentFileBlob)
|
ocrByServer(this.currentFileBlob, { lang: this.selectedLangs })
|
||||||
.then((data) => {
|
.then((data) => {
|
||||||
console.log("success", data);
|
console.log("success", data);
|
||||||
this.ocrOutput = data.text;
|
this.ocrOutput = data.text;
|
||||||
|
|||||||
+11
-2
@@ -50,7 +50,7 @@
|
|||||||
readonly
|
readonly
|
||||||
v-model="selectedFileName"
|
v-model="selectedFileName"
|
||||||
class="form-control"
|
class="form-control"
|
||||||
placeholder="Choose a file..."
|
placeholder="Choose an image..."
|
||||||
@click="$refs.file_input.click()"
|
@click="$refs.file_input.click()"
|
||||||
/>
|
/>
|
||||||
<div class="input-group-append">
|
<div class="input-group-append">
|
||||||
@@ -59,7 +59,7 @@
|
|||||||
type="button"
|
type="button"
|
||||||
@click="$refs.file_input.click()"
|
@click="$refs.file_input.click()"
|
||||||
>
|
>
|
||||||
Choose another image
|
Choose an image
|
||||||
</button>
|
</button>
|
||||||
<button
|
<button
|
||||||
class="btn btn-success pull-right"
|
class="btn btn-success pull-right"
|
||||||
@@ -78,6 +78,15 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="col-lg-6 col-md-12">
|
||||||
|
<div class="form-group row">
|
||||||
|
<label for="inputEmail3" class="col-form-label mr-3" >Language</label>
|
||||||
|
<div class="form-check form-check-inline" v-for="lang in availableLangs" :key="lang.code" >
|
||||||
|
<input class="form-check-input" type="checkbox" :id="`lang-${lang.code}`" v-model="selectedLangs" :value="lang.code" />
|
||||||
|
<label class="form-check-label" :for="`lang-${lang.code}`" >{{lang.label}}</label >
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="row w-100">
|
<div class="row w-100">
|
||||||
|
|||||||
+1
-1
@@ -17,7 +17,7 @@ module.exports = async function (fastify, opts) {
|
|||||||
const data = await req.file();
|
const data = await req.file();
|
||||||
const uid = crypto.randomBytes(16).toString("hex");
|
const uid = crypto.randomBytes(16).toString("hex");
|
||||||
const filename = `${UPLOAD_PATH}/${uid}.${mime.extension(data.mimetype)}`;
|
const filename = `${UPLOAD_PATH}/${uid}.${mime.extension(data.mimetype)}`;
|
||||||
const lang = "mal+eng";
|
const lang = req.query.lang ? req.query.lang.replace(/:/g, "+") : "mal";
|
||||||
await pump(data.file, fs.createWriteStream(filename));
|
await pump(data.file, fs.createWriteStream(filename));
|
||||||
const args = [filename, "stdout", "-l", lang];
|
const args = [filename, "stdout", "-l", lang];
|
||||||
const { stdout, stderr } = await exec("tesseract", args);
|
const { stdout, stderr } = await exec("tesseract", args);
|
||||||
|
|||||||
Reference in New Issue
Block a user