UNPKG

nfv

Version:

[Updated to use ndv package instead dv] FormVision is a node.js library for extracting data from scanned forms

41 lines (38 loc) 1.28 kB
// Generated by CoffeeScript 1.12.7 var dv; dv = require('ndv'); module.exports = function(image) { var curve, darkValueMask, deltaV, desaturatedMask, h, hsv, i, j, k, l, len, protectionMask, rect, ref, results, s, v, vOrig, x; hsv = image.toColor().toHSV(); desaturatedMask = hsv.inRange(0, 0, 0, 239, 0.1 * 255, 255); darkValueMask = hsv.inRange(0, 0, 0, 239, 255, 0.5 * 255).invert(); h = hsv.toGray(1, 0, 0); s = hsv.toGray(0, 1, 0); v = hsv.toGray(0, 0, 1); vOrig = new dv.Image(v); curve = (function() { results = []; for (i = 0; i <= 255; i++){ results.push(i); } return results; }).apply(this); for (x = j = 0; j <= 199; x = ++j) { curve[x] = 0; } for (x = k = 0; k <= 54; x = ++k) { curve[x + 200] = x / 54 * 220; } protectionMask = desaturatedMask.and(darkValueMask.erode(5, 5)); v.applyCurve(curve, protectionMask); deltaV = vOrig.subtract(v); deltaV = deltaV.invert(); ref = deltaV.threshold(254).dilate(5, 5).connectedComponents(8); for (l = 0, len = ref.length; l < len; l++) { rect = ref[l]; if (rect.height > 100 || rect.width < 5 || rect.height < 5) { deltaV.clearBox(rect); } } deltaV = deltaV.invert(); v = vOrig.subtract(deltaV); return new dv.Image(h, s, v).toRGB(); };