mirror of
https://github.com/zadam/trilium.git
synced 2025-03-01 14:22:32 +01:00
ocr test
This commit is contained in:
parent
bd8568809f
commit
c68a67d148
2316
package-lock.json
generated
2316
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@ -34,6 +34,7 @@
|
|||||||
"async-mutex": "0.4.0",
|
"async-mutex": "0.4.0",
|
||||||
"axios": "1.2.2",
|
"axios": "1.2.2",
|
||||||
"better-sqlite3": "7.4.5",
|
"better-sqlite3": "7.4.5",
|
||||||
|
"canvas": "2.11.0",
|
||||||
"chokidar": "3.5.3",
|
"chokidar": "3.5.3",
|
||||||
"cls-hooked": "4.2.2",
|
"cls-hooked": "4.2.2",
|
||||||
"commonmark": "0.30.0",
|
"commonmark": "0.30.0",
|
||||||
@ -69,6 +70,7 @@
|
|||||||
"multer": "1.4.5-lts.1",
|
"multer": "1.4.5-lts.1",
|
||||||
"node-abi": "3.31.0",
|
"node-abi": "3.31.0",
|
||||||
"normalize-strings": "1.1.1",
|
"normalize-strings": "1.1.1",
|
||||||
|
"ocrad.js": "antimatter15/ocrad.js#master",
|
||||||
"open": "8.4.0",
|
"open": "8.4.0",
|
||||||
"pdfjs-dist": "2.8.335",
|
"pdfjs-dist": "2.8.335",
|
||||||
"rand-token": "1.0.1",
|
"rand-token": "1.0.1",
|
||||||
@ -85,7 +87,6 @@
|
|||||||
"session-file-store": "1.5.0",
|
"session-file-store": "1.5.0",
|
||||||
"stream-throttle": "0.1.3",
|
"stream-throttle": "0.1.3",
|
||||||
"striptags": "3.2.0",
|
"striptags": "3.2.0",
|
||||||
"tesseract.js": "^4.0.2",
|
|
||||||
"tmp": "0.2.1",
|
"tmp": "0.2.1",
|
||||||
"turndown": "7.1.1",
|
"turndown": "7.1.1",
|
||||||
"unescape": "1.0.1",
|
"unescape": "1.0.1",
|
||||||
|
@ -9,10 +9,11 @@ const sql = require('./sql');
|
|||||||
const jimp = require('jimp');
|
const jimp = require('jimp');
|
||||||
const imageType = require('image-type');
|
const imageType = require('image-type');
|
||||||
const sanitizeFilename = require('sanitize-filename');
|
const sanitizeFilename = require('sanitize-filename');
|
||||||
const noteRevisionService = require('./note_revisions');
|
|
||||||
const isSvg = require('is-svg');
|
const isSvg = require('is-svg');
|
||||||
const isAnimated = require('is-animated');
|
const isAnimated = require('is-animated');
|
||||||
const htmlSanitizer = require("./html_sanitizer");
|
const htmlSanitizer = require("./html_sanitizer");
|
||||||
|
const OCRAD = require('ocrad.js');
|
||||||
|
const Canvas = require('canvas');
|
||||||
|
|
||||||
async function processImage(uploadBuffer, originalName, shrinkImageSwitch) {
|
async function processImage(uploadBuffer, originalName, shrinkImageSwitch) {
|
||||||
const compressImages = optionService.getOptionBool("compressImages");
|
const compressImages = optionService.getOptionBool("compressImages");
|
||||||
@ -82,7 +83,19 @@ function updateImage(noteId, uploadBuffer, originalName) {
|
|||||||
note.save();
|
note.save();
|
||||||
|
|
||||||
note.setContent(buffer);
|
note.setContent(buffer);
|
||||||
})
|
});
|
||||||
|
|
||||||
|
const start = Date.now();
|
||||||
|
const img = new Canvas.Image();
|
||||||
|
img.src = buffer;
|
||||||
|
const canvas = new Canvas.createCanvas(img.width, img.height);
|
||||||
|
const ctx = canvas.getContext('2d');
|
||||||
|
ctx.drawImage(img, 0, 0, img.width, img.height);
|
||||||
|
const text = OCRAD(canvas);
|
||||||
|
|
||||||
|
console.log(text);
|
||||||
|
|
||||||
|
log.info(`OCR of ${buffer.byteLength} bytes took ${Date.now() - start}ms`);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -146,8 +159,7 @@ async function shrinkImage(buffer, originalName) {
|
|||||||
finalImageBuffer = await resize(buffer, jpegQuality);
|
finalImageBuffer = await resize(buffer, jpegQuality);
|
||||||
}
|
}
|
||||||
catch (e) {
|
catch (e) {
|
||||||
log.error(`Failed to resize image '${originalName}'
|
log.error(`Failed to resize image '${originalName}', stack: ${e.stack}`);
|
||||||
Stack: ${e.stack}`);
|
|
||||||
|
|
||||||
finalImageBuffer = buffer;
|
finalImageBuffer = buffer;
|
||||||
}
|
}
|
||||||
@ -164,6 +176,8 @@ Stack: ${e.stack}`);
|
|||||||
async function resize(buffer, quality) {
|
async function resize(buffer, quality) {
|
||||||
const imageMaxWidthHeight = optionService.getOptionInt('imageMaxWidthHeight');
|
const imageMaxWidthHeight = optionService.getOptionInt('imageMaxWidthHeight');
|
||||||
|
|
||||||
|
const start = Date.now();
|
||||||
|
|
||||||
const image = await jimp.read(buffer);
|
const image = await jimp.read(buffer);
|
||||||
|
|
||||||
if (image.bitmap.width > image.bitmap.height && image.bitmap.width > imageMaxWidthHeight) {
|
if (image.bitmap.width > image.bitmap.height && image.bitmap.width > imageMaxWidthHeight) {
|
||||||
@ -178,7 +192,11 @@ async function resize(buffer, quality) {
|
|||||||
// when converting PNG to JPG we lose alpha channel, this is replaced by white to match Trilium white background
|
// when converting PNG to JPG we lose alpha channel, this is replaced by white to match Trilium white background
|
||||||
image.background(0xFFFFFFFF);
|
image.background(0xFFFFFFFF);
|
||||||
|
|
||||||
return await image.getBufferAsync(jimp.MIME_JPEG);
|
const resultBuffer = await image.getBufferAsync(jimp.MIME_JPEG);
|
||||||
|
|
||||||
|
log.info(`Resizing image of ${resultBuffer.byteLength} took ${Date.now() - start}ms`);
|
||||||
|
|
||||||
|
return resultBuffer;
|
||||||
}
|
}
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user