-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathapp.js
More file actions
125 lines (112 loc) · 3.33 KB
/
Copy pathapp.js
File metadata and controls
125 lines (112 loc) · 3.33 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
const express = require("express");
const app = express();
// reads and creates files
const fs = require("fs");
// multer allows us to upload files to server
const multer = require("multer");
const { TesseractWorker } = require("tesseract.js");
// worker analyzes images
const worker = new TesseractWorker();
const { db, Copy } = require("./db");
// storage
const storage = multer.diskStorage({
destination: (req, file, cb) => {
cb(null, "./uploads");
},
filename: (req, file, cb) => {
cb(null, file.originalname);
},
});
// upload will check the storage to find the file by the filenmae
const upload = multer({ storage: storage }).single("avatar");
app.set("view engine", "ejs");
app.use(express.static("public"));
// ROUTES
app.get("/", (req, res) => {
res.render("index");
});
app.get("/copies", async (req, res, next) => {
const copies = await Copy.findAll({
attributes: ["text", "language"],
});
const tagline = "Here are your searchable converted texts.";
res.render("copies", {
copies: copies,
tagline: tagline,
});
});
app.post("/upload", (req, res) => {
upload(req, res, (err) => {
fs.readFile(`./uploads/${req.file.originalname}`, (err, data) => {
if (err) return console.log("This is your error", err);
worker
.recognize(data, "eng", { tessjs_create_pdf: "1" })
.progress((progress) => {
console.log(progress);
})
.then((result) => {
// res.send(result.text) would show result in browser
Copy.create({
text: result.text,
language: "English",
});
res.redirect("/download");
})
.finally(() => worker.terminate());
});
});
});
app.post("/upload-spanish", (req, res) => {
upload(req, res, (err) => {
fs.readFile(`./uploads/${req.file.originalname}`, (err, data) => {
if (err) return console.log("This is your error", err);
worker
.recognize(data, "spa", { tessjs_create_pdf: "1" })
.progress((progress) => {
console.log(progress);
})
.then((result) => {
Copy.create({
text: result.text,
language: "Spanish",
});
res.redirect("/download");
})
.finally(() => worker.terminate());
});
});
});
app.post("/upload-Persian", (req, res) => {
upload(req, res, (err) => {
fs.readFile(`./uploads/${req.file.originalname}`, (err, data) => {
if (err) return console.log("This is your error", err);
worker
.recognize(data, "fas", { tessjs_create_pdf: "1" })
.progress((progress) => {
console.log(progress);
})
.then((result) => {
Copy.create({
text: result.text,
language: "Persian",
});
res.redirect("/download");
})
.finally(() => worker.terminate());
});
});
});
// downloads latest file that was uploaded
app.get("/download", (req, res) => {
const file = `${__dirname}/tesseract.js-ocr-result.pdf`;
res.download(file);
});
// start up our server
const PORT = process.env.PORT || 5000;
db.sync() // if you update your db schemas, make sure you drop the tables first and then recreate them
.then(() => {
console.log("db synced");
app.listen(PORT, () =>
console.log(`studiously serving silly sounds on port ${PORT}`)
);
});