-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathapp.js
More file actions
76 lines (69 loc) · 2.55 KB
/
Copy pathapp.js
File metadata and controls
76 lines (69 loc) · 2.55 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
const express = require('express');
const cors = require('cors');
const { createWorker } = require('tesseract.js');
const { getCategory } = require('./category.js')
const bp = require('body-parser');
const axios = require('axios');
const bpErrorHandler = require('express-body-parser-error-handler');
const router = express.Router();
const app = express();
const process = require('node:process');
// cross origin requests header
const corsOpt = {
origin: "*",
credentials: false
}
app.use(cors(corsOpt))
app.use(express.static('public'))
app.use(bp.json());
app.use(bp.urlencoded({
extended: true
}));
let worker;
(async () =>
{
worker = await createWorker("kor+eng",undefined,{
errorHandler: (err) => err,
});
}
)();
app.use(bpErrorHandler());
router.get("/", (req, res) => {
res.sendFile('public/index.html')
})
// when post request received
router.post('/upload', bp.text({type:"*/*", limit: "5mb"}),async (req, res) => {
let f = req.body;
if (f)
{
try{
let v1 = await Promise.all([worker.recognize(Buffer.from(f,'base64'))])
let t = v1[0].data.text
let vs = t.split('\n').map(s => s.replace(/\s+/g, ' '))
let z1 = vs
.filter((s) =>
['유효기간', '주문번호', '교환처'].map( (q) => s.includes(q) )
.reduce((n, m) => n || m))
let z2 = vs.filter(s => s.match(/([0-9\s]{12,20})/))[0].replace(/\D/g, "");
let zx = z1.map((x) => x.split(/\s(.*)/g));
let nameindex = vs.map(v =>/[0-9\s]{12,20}/g.test(v)).indexOf(true);
let mm = {};
mm[zx[0][0]] = zx[0][1];
mm[zx[1][0]] = zx[1][1];
mm[zx[2][0]] = zx[2][1];
let modified = mm['교환처'].replaceAll('8', 'B').replaceAll('9', 'Q').replaceAll('0', 'Q').replaceAll('6', 'Q')
if (v1) res.json({productName: vs[nameindex - 1], expireDate: mm['유효기간'], orderNum: mm['주문번호'], storeName: modified, category:getCategory(modified), barcodeNum: z2});
else res.status(401).json({status: "failed!"});
}catch(e)
{
res.status(401).json({status: "failed", msg: e.toString()});
console.log('Error Occured', e.toString());
}finally{
//work
}
}
else res.status(404).json({status: "failed!"});
})
app.use(router)
// run server
app.listen(3000, function(){ console.log("Server On - at localhost:3000"); });