lfp


Logs | Files | README | README | LICENSE | GitLab


1
commit 6f50d9f878ed501015290a602a61334667d44989
2
Author: Connor Etherington <[email protected]>
3
Date:   Mon Oct 2 08:17:02 2023 +0200
4
5
    Auto-Commit Update 02.10.2023 - 08:17:02
6
---
7
 PKGBUILD                                           |  16 +-
8
 usr/share/lfp/ocr/node_modules/.yarn-integrity     |  25 +++
9
 .../ocr/node_modules/node-tesseract-ocr/LICENSE    |  21 +++
10
 .../node_modules/node-tesseract-ocr/package.json   |  28 +++
11
 .../ocr/node_modules/node-tesseract-ocr/readme.md  |  96 ++++++++++
12
 .../node_modules/node-tesseract-ocr/src/index.d.ts | 195 +++++++++++++++++++++
13
 .../node_modules/node-tesseract-ocr/src/index.js   |  58 ++++++
14
 .../ocr/node_modules/node-tesseract-ocr/yarn.lock  |   4 +
15
 usr/share/lfp/ocr/package.json                     |   5 +-
16
 usr/share/lfp/ocr/yarn.lock                        |  43 +++++
17
 10 files changed, 480 insertions(+), 11 deletions(-)
18
19
diff --git a/PKGBUILD b/PKGBUILD
20
index 5829a21..7dd2504 100644
21
--- a/PKGBUILD
22
+++ b/PKGBUILD
23
@@ -35,7 +35,7 @@ package() {
24
   pip3 install --user --upgrade --force-reinstall --no-deps setuptools wheel
25
   python3 ./setup.py install --root="$pkgdir" --prefix=/usr --optimize=1
26
 
27
-  cd "$srcdir/${pkgname}-${pkgver}-${pkgrel}-${arch}" ||
28
+  cd "$srcdir/${pkgname}-${pkgver}-${pkgrel}-${arch}" >/dev/null 2>&1 ||
29
   cd "$srcdir/${pkgname}"
30
 
31
   install -Dm755 usr/bin/* -t "${pkgdir}/usr/bin"
32
@@ -44,15 +44,11 @@ package() {
33
   install -Dm644 usr/share/licenses/${pkgname}/LICENSE "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
34
   install -Dm644 usr/share/doc/${pkgname}/README.md "${pkgdir}/usr/share/doc/${pkgname}/README.md"
35
   install -Dm644 usr/share/man/man1/${pkgname}.1.gz "${pkgdir}/usr/share/man/man1/${pkgname}.1.gz"
36
+  install -Dm755 usr/share/${pkgname}/ocr/ocr.js -t "${pkgdir}/usr/share/${pkgname}/ocr"
37
+  install -Dm644 usr/share/${pkgname}/ocr/package.json -t "${pkgdir}/usr/share/${pkgname}/ocr"
38
 
39
-  which node 2>/dev/null && {
40
-    install -Dm755 usr/share/${pkgname}/ocr/ocr.js -t "${pkgdir}/usr/share/${pkgname}/ocr"
41
-    install -Dm644 usr/share/${pkgname}/ocr/package.json -t "${pkgdir}/usr/share/${pkgname}/ocr"
42
-    which yarn 2>/dev/null && {
43
-      cd "${pkgdir}/usr/share/${pkgname}/ocr" && yarn install
44
-    } || {
45
-      cd "${pkgdir}/usr/share/${pkgname}/ocr" && npm install
46
-    } || true
47
-  } || true
48
+  cd "${pkgdir}/usr/share/${pkgname}/ocr" && while read -r file; do
49
+    install -Dm644 "$file" -t "${pkgdir}/usr/share/${pkgname}/ocr/node_modules";
50
+  done < <(find . -type f ${pkgdir}/usr/share/${pkgname}/ocr/node_modules)
51
 
52
 }
53
diff --git a/usr/share/lfp/ocr/node_modules/.yarn-integrity b/usr/share/lfp/ocr/node_modules/.yarn-integrity
54
new file mode 100644
55
index 0000000..929bff4
56
--- /dev/null
57
+++ b/usr/share/lfp/ocr/node_modules/.yarn-integrity
58
@@ -0,0 +1,25 @@
59
+{
60
+  "systemParams": "linux-x64-115",
61
+  "modulesFolders": [
62
+    "node_modules"
63
+  ],
64
+  "flags": [],
65
+  "linkedModules": [],
66
+  "topLevelPatterns": [
67
+    "child_process@^1.0.2",
68
+    "fs@^0.0.1-security",
69
+    "node-tesseract-ocr@^2.2.1",
70
+    "path@^0.12.7"
71
+  ],
72
+  "lockfileEntries": {
73
+    "child_process@^1.0.2": "https://registry.yarnpkg.com/child_process/-/child_process-1.0.2.tgz#b1f7e7fc73d25e7fd1d455adc94e143830182b5a",
74
+    "fs@^0.0.1-security": "https://registry.yarnpkg.com/fs/-/fs-0.0.1-security.tgz#8a7bd37186b6dddf3813f23858b57ecaaf5e41d4",
75
+    "[email protected]": "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de",
76
+    "node-tesseract-ocr@^2.2.1": "https://registry.yarnpkg.com/node-tesseract-ocr/-/node-tesseract-ocr-2.2.1.tgz#465fea1a1acd6720efb582d5f6c2bcbb82cce94d",
77
+    "path@^0.12.7": "https://registry.yarnpkg.com/path/-/path-0.12.7.tgz#d4dc2a506c4ce2197eb481ebfcd5b36c0140b10f",
78
+    "process@^0.11.1": "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182",
79
+    "util@^0.10.3": "https://registry.yarnpkg.com/util/-/util-0.10.4.tgz#3aa0125bfe668a4672de58857d3ace27ecb76901"
80
+  },
81
+  "files": [],
82
+  "artifacts": {}
83
+}
84
diff --git a/usr/share/lfp/ocr/node_modules/node-tesseract-ocr/LICENSE b/usr/share/lfp/ocr/node_modules/node-tesseract-ocr/LICENSE
85
new file mode 100644
86
index 0000000..f14f7b7
87
--- /dev/null
88
+++ b/usr/share/lfp/ocr/node_modules/node-tesseract-ocr/LICENSE
89
@@ -0,0 +1,21 @@
90
+MIT License
91
+
92
+Copyright (c) 2019 zapolnoch
93
+
94
+Permission is hereby granted, free of charge, to any person obtaining a copy
95
+of this software and associated documentation files (the "Software"), to deal
96
+in the Software without restriction, including without limitation the rights
97
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
98
+copies of the Software, and to permit persons to whom the Software is
99
+furnished to do so, subject to the following conditions:
100
+
101
+The above copyright notice and this permission notice shall be included in all
102
+copies or substantial portions of the Software.
103
+
104
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
105
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
106
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
107
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
108
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
109
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
110
+SOFTWARE.
111
diff --git a/usr/share/lfp/ocr/node_modules/node-tesseract-ocr/package.json b/usr/share/lfp/ocr/node_modules/node-tesseract-ocr/package.json
112
new file mode 100755
113
index 0000000..493058c
114
--- /dev/null
115
+++ b/usr/share/lfp/ocr/node_modules/node-tesseract-ocr/package.json
116
@@ -0,0 +1,28 @@
117
+{
118
+  "name": "node-tesseract-ocr",
119
+  "version": "2.2.1",
120
+  "description": "A Node.js wrapper for the Tesseract OCR API",
121
+  "keywords": [
122
+    "ocr",
123
+    "tesseract",
124
+    "text recognition",
125
+    "optical character recognition",
126
+    "image to text"
127
+  ],
128
+  "license": "MIT",
129
+  "main": "src/index.js",
130
+  "types": "src/index.d.ts",
131
+  "repository": {
132
+    "type": "git",
133
+    "url": "git://github.com/zapolnoch/node-tesseract-ocr.git"
134
+  },
135
+  "engines": {
136
+    "node": ">=10"
137
+  },
138
+  "scripts": {
139
+    "test": "npm-run-all test:*",
140
+    "test:lint": "eslint .",
141
+    "test:tape": "tape test/**/*.js",
142
+    "test:audit": "npm audit --audit-level=high"
143
+  }
144
+}
145
diff --git a/usr/share/lfp/ocr/node_modules/node-tesseract-ocr/readme.md b/usr/share/lfp/ocr/node_modules/node-tesseract-ocr/readme.md
146
new file mode 100755
147
index 0000000..486cab3
148
--- /dev/null
149
+++ b/usr/share/lfp/ocr/node_modules/node-tesseract-ocr/readme.md
150
@@ -0,0 +1,96 @@
151
+# Tesseract OCR for Node.js
152
+
153
+[![Build Status](https://img.shields.io/travis/zapolnoch/node-tesseract-ocr/master.svg?style=flat-square)](https://travis-ci.org/zapolnoch/node-tesseract-ocr)
154
+[![npm](https://img.shields.io/npm/v/node-tesseract-ocr.svg?style=flat-square)](https://www.npmjs.com/package/node-tesseract-ocr)
155
+[![npm](https://img.shields.io/npm/dm/node-tesseract-ocr.svg?style=flat-square)](https://www.npmjs.com/package/node-tesseract-ocr)
156
+[![Known Vulnerabilities](https://snyk.io/test/github/zapolnoch/node-tesseract-ocr/badge.svg)](https://snyk.io/test/github/zapolnoch/node-tesseract-ocr)
157
+
158
+## Installation
159
+
160
+First, you need to install the Tesseract project. Instructions for installing Tesseract for all platforms can be found on [the project site](https://github.com/tesseract-ocr/tessdoc/blob/master/Installation.md). On Debian/Ubuntu:
161
+
162
+```bash
163
+apt-get install tesseract-ocr
164
+```
165
+
166
+After you've installed Tesseract, you can go installing the npm-package:
167
+
168
+```bash
169
+npm install node-tesseract-ocr
170
+```
171
+
172
+## Usage
173
+
174
+```js
175
+const tesseract = require("node-tesseract-ocr")
176
+
177
+const config = {
178
+  lang: "eng",
179
+  oem: 1,
180
+  psm: 3,
181
+}
182
+
183
+tesseract
184
+  .recognize("image.jpg", config)
185
+  .then((text) => {
186
+    console.log("Result:", text)
187
+  })
188
+  .catch((error) => {
189
+    console.log(error.message)
190
+  })
191
+```
192
+
193
+Also you can pass Buffer:
194
+
195
+```js
196
+const img = fs.readFileSync("image.jpg")
197
+
198
+tesseract
199
+  .recognize(img, config)
200
+  .then((text) => {
201
+    console.log("Result:", text)
202
+  })
203
+  .catch((error) => {
204
+    console.log(error.message)
205
+  })
206
+```
207
+
208
+or URL:
209
+
210
+```js
211
+const img = "https://tesseract.projectnaptha.com/img/eng_bw.png"
212
+
213
+tesseract
214
+  .recognize(img, config)
215
+  .then((text) => {
216
+    console.log("Result:", text)
217
+  })
218
+  .catch((error) => {
219
+    console.log(error.message)
220
+  })
221
+```
222
+
223
+If you want to process multiple images in a single run, then pass an array:
224
+
225
+```js
226
+const images = ["./test/samples/file1.png", "./test/samples/file2.png"]
227
+
228
+tesseract
229
+  .recognize(images, config)
230
+  .then((text) => {
231
+    console.log("Result:", text)
232
+  })
233
+  .catch((error) => {
234
+    console.log(error.message)
235
+  })
236
+```
237
+
238
+In the config object you can pass any [OCR options](https://github.com/tesseract-ocr/tesseract/blob/master/doc/tesseract.1.asc#options). Also you can pass here any [control parameters](https://tesseract-ocr.github.io/tessdoc/tess3/ControlParams) or use ready-made sets of [config files](https://github.com/tesseract-ocr/tesseract/tree/master/tessdata/configs) (like hocr):
239
+
240
+```js
241
+const result = await tesseract.recognize("image.jpg", {
242
+  load_system_dawg: 0,
243
+  tessedit_char_whitelist: "0123456789",
244
+  presets: ["tsv"],
245
+})
246
+```
247
diff --git a/usr/share/lfp/ocr/node_modules/node-tesseract-ocr/src/index.d.ts b/usr/share/lfp/ocr/node_modules/node-tesseract-ocr/src/index.d.ts
248
new file mode 100644
249
index 0000000..3563e4d
250
--- /dev/null
251
+++ b/usr/share/lfp/ocr/node_modules/node-tesseract-ocr/src/index.d.ts
252
@@ -0,0 +1,195 @@
253
+export type Input = string | string[] | Buffer
254
+
255
+// #region Preset
256
+// https://github.com/tesseract-ocr/tesseract/tree/master/tessdata/configs
257
+// https://github.com/tesseract-ocr/tesseract/tree/master/tessdata/tessconfigs
258
+export type Preset =
259
+  | "alto"
260
+  | "ambigs.train"
261
+  | "api_config"
262
+  | "bazaar"
263
+  | "bigram"
264
+  | "box.train"
265
+  | "box.train.stderr"
266
+  | "digits"
267
+  | "get.images"
268
+  | "hocr"
269
+  | "inter"
270
+  | "kannada"
271
+  | "linebox"
272
+  | "logfile"
273
+  | "lstm.train"
274
+  | "lstmbox"
275
+  | "lstmdebug"
276
+  | "makebox"
277
+  | "pdf"
278
+  | "quiet"
279
+  | "rebox"
280
+  | "strokewidth"
281
+  | "tsv"
282
+  | "txt"
283
+  | "unlv"
284
+  | "wordstrbox"
285
+  | "batch"
286
+  | "batch.nochop"
287
+  | "matdemo"
288
+  | "msdemo"
289
+  | "nobatch"
290
+  | "segdemo"
291
+// #endregion
292
+
293
+// #region Language
294
+// https://github.com/tesseract-ocr/tesseract/blob/master/doc/tesseract.1.asc#LANGUAGES
295
+// https://github.com/tesseract-ocr/tessdoc/blob/master/Data-Files-in-different-versions.md
296
+export type Language =
297
+  | "afr"
298
+  | "amh"
299
+  | "ara"
300
+  | "asm"
301
+  | "aze"
302
+  | "aze_cyrl"
303
+  | "bel"
304
+  | "ben"
305
+  | "bod"
306
+  | "bos"
307
+  | "bre"
308
+  | "bul"
309
+  | "cat"
310
+  | "ceb"
311
+  | "ces"
312
+  | "chi_sim"
313
+  | "chi_tra"
314
+  | "chr"
315
+  | "cos"
316
+  | "cym"
317
+  | "dan"
318
+  | "deu"
319
+  | "div"
320
+  | "dzo"
321
+  | "ell"
322
+  | "eng"
323
+  | "enm"
324
+  | "epo"
325
+  | "equ"
326
+  | "est"
327
+  | "eus"
328
+  | "fas"
329
+  | "fao"
330
+  | "fil"
331
+  | "fin"
332
+  | "fra"
333
+  | "frk"
334
+  | "frm"
335
+  | "fry"
336
+  | "gla"
337
+  | "gle"
338
+  | "glg"
339
+  | "grc"
340
+  | "guj"
341
+  | "hat"
342
+  | "heb"
343
+  | "hin"
344
+  | "hrv"
345
+  | "hun"
346
+  | "hye"
347
+  | "iku"
348
+  | "ind"
349
+  | "isl"
350
+  | "ita"
351
+  | "ita_old"
352
+  | "jav"
353
+  | "jpn"
354
+  | "kan"
355
+  | "kat"
356
+  | "kat_old"
357
+  | "kaz"
358
+  | "khm"
359
+  | "kir"
360
+  | "kmr"
361
+  | "kor"
362
+  | "kor_vert"
363
+  | "lao"
364
+  | "lat"
365
+  | "lav"
366
+  | "lit"
367
+  | "ltz"
368
+  | "mal"
369
+  | "mar"
370
+  | "mkd"
371
+  | "mlt"
372
+  | "mon"
373
+  | "mri"
374
+  | "msa"
375
+  | "mya"
376
+  | "nep"
377
+  | "nld"
378
+  | "nor"
379
+  | "oci"
380
+  | "ori"
381
+  | "osd"
382
+  | "pan"
383
+  | "pol"
384
+  | "por"
385
+  | "pus"
386
+  | "que"
387
+  | "ron"
388
+  | "rus"
389
+  | "san"
390
+  | "sin"
391
+  | "slk"
392
+  | "slv"
393
+  | "snd"
394
+  | "spa"
395
+  | "spa_old"
396
+  | "sqi"
397
+  | "srp"
398
+  | "srp_latn"
399
+  | "sun"
400
+  | "swa"
401
+  | "swe"
402
+  | "syr"
403
+  | "tam"
404
+  | "tat"
405
+  | "tel"
406
+  | "tgk"
407
+  | "tha"
408
+  | "tir"
409
+  | "ton"
410
+  | "tur"
411
+  | "uig"
412
+  | "ukr"
413
+  | "urd"
414
+  | "uzb"
415
+  | "uzb_cyrl"
416
+  | "vie"
417
+  | "yid"
418
+  | "yor"
419
+// #endregion
420
+
421
+export type Config = Partial<{
422
+  // own options
423
+  binary: string
424
+  debug: boolean
425
+  presets: Preset[] | string[]
426
+  lang: Language | string // alias
427
+
428
+  // CLI options
429
+  // https://github.com/tesseract-ocr/tesseract/blob/master/doc/tesseract.1.asc
430
+  dpi: number
431
+  l: Language | string
432
+  psm: number
433
+  oem: number
434
+  "tessdata-dir": string
435
+  "user-patterns": string
436
+  "user-words": string
437
+
438
+  // any ControlParams
439
+  [key: string]: any
440
+}>
441
+
442
+/**
443
+ * @param input - URL, local image path or Buffer
444
+ * @param config - any OCR options and control parameters
445
+ * @returns default output format is text
446
+ */
447
+export function recognize(input: Input, config?: Config): Promise<string>
448
diff --git a/usr/share/lfp/ocr/node_modules/node-tesseract-ocr/src/index.js b/usr/share/lfp/ocr/node_modules/node-tesseract-ocr/src/index.js
449
new file mode 100755
450
index 0000000..ff8fd67
451
--- /dev/null
452
+++ b/usr/share/lfp/ocr/node_modules/node-tesseract-ocr/src/index.js
453
@@ -0,0 +1,58 @@
454
+const exec = require("child_process").exec
455
+const log = console.debug
456
+
457
+/**
458
+ * @param input - URL, local image path or Buffer
459
+ * @param config - any OCR options and control parameters
460
+ * @returns default output format is text
461
+ */
462
+function recognize(input, config = {}) {
463
+  const options = getOptions(config)
464
+  const binary = config.binary || "tesseract"
465
+  const isSingleLocalFile = typeof input === "string" && !input.match(/^https?:\/\//)
466
+  const inputOption = isSingleLocalFile ? `"${input}"` : "stdin"
467
+  const command = [binary, inputOption, "stdout", ...options].join(" ")
468
+
469
+  if (config.debug) log("command", command)
470
+
471
+  return new Promise((resolve, reject) => {
472
+    const child = exec(command, (error, stdout, stderr) => {
473
+      if (config.debug) log(stderr)
474
+      if (error) reject(error)
475
+      resolve(stdout)
476
+    })
477
+    if (inputOption === "stdin") pipeInput(input, child)
478
+  })
479
+}
480
+
481
+function pipeInput(input, child) {
482
+  if (typeof input === "string") {
483
+    const protocol = input.match(/^(.*?):/)[1]
484
+    return require(protocol).get(input, (response) => {
485
+      response.pipe(child.stdin)
486
+    })
487
+  }
488
+
489
+  if (Array.isArray(input)) input = Buffer.from(input.join("\n"), "utf-8")
490
+  child.stdin.write(input)
491
+  child.stdin.end()
492
+}
493
+
494
+function getOptions(config) {
495
+  const ocrOptions = ["tessdata-dir", "user-words", "user-patterns", "psm", "oem", "dpi"]
496
+
497
+  return Object.entries(config)
498
+    .map(([key, value]) => {
499
+      if (["debug", "presets", "binary"].includes(key)) return
500
+      if (key === "lang") return `-l ${value}`
501
+      if (ocrOptions.includes(key)) return `--${key} ${value}`
502
+
503
+      return `-c ${key}=${value}`
504
+    })
505
+    .concat(config.presets) // options -l and --psm must occur before any CONFIGFILE
506
+    .filter(Boolean)
507
+}
508
+
509
+module.exports = {
510
+  recognize,
511
+}
512
diff --git a/usr/share/lfp/ocr/node_modules/node-tesseract-ocr/yarn.lock b/usr/share/lfp/ocr/node_modules/node-tesseract-ocr/yarn.lock
513
new file mode 100644
514
index 0000000..fb57ccd
515
--- /dev/null
516
+++ b/usr/share/lfp/ocr/node_modules/node-tesseract-ocr/yarn.lock
517
@@ -0,0 +1,4 @@
518
+# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
519
+# yarn lockfile v1
520
+
521
+
522
diff --git a/usr/share/lfp/ocr/package.json b/usr/share/lfp/ocr/package.json
523
index 9ce2737..394f4c5 100644
524
--- a/usr/share/lfp/ocr/package.json
525
+++ b/usr/share/lfp/ocr/package.json
526
@@ -15,5 +15,8 @@
527
     "lfpreviewer"
528
   ],
529
   "author": "Connor Etherington <[email protected]",
530
-  "license": "MIT"
531
+  "license": "MIT",
532
+  "dependencies": {
533
+    "node-tesseract-ocr": "^2.2.1"
534
+  }
535
 }
536
diff --git a/usr/share/lfp/ocr/yarn.lock b/usr/share/lfp/ocr/yarn.lock
537
new file mode 100644
538
index 0000000..75651cd
539
--- /dev/null
540
+++ b/usr/share/lfp/ocr/yarn.lock
541
@@ -0,0 +1,43 @@
542
+# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
543
+# yarn lockfile v1
544
+
545
+
546
+child_process@^1.0.2:
547
+  version "1.0.2"
548
+  resolved "https://registry.yarnpkg.com/child_process/-/child_process-1.0.2.tgz#b1f7e7fc73d25e7fd1d455adc94e143830182b5a"
549
+  integrity sha512-Wmza/JzL0SiWz7kl6MhIKT5ceIlnFPJX+lwUGj7Clhy5MMldsSoJR0+uvRzOS5Kv45Mq7t1PoE8TsOA9bzvb6g==
550
+
551
+fs@^0.0.1-security:
552
+  version "0.0.1-security"
553
+  resolved "https://registry.yarnpkg.com/fs/-/fs-0.0.1-security.tgz#8a7bd37186b6dddf3813f23858b57ecaaf5e41d4"
554
+  integrity sha512-3XY9e1pP0CVEUCdj5BmfIZxRBTSDycnbqhIOGec9QYtmVH2fbLpj86CFWkrNOkt/Fvty4KZG5lTglL9j/gJ87w==
555
+
556
+[email protected]:
557
+  version "2.0.3"
558
+  resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
559
+  integrity sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==
560
+
561
+node-tesseract-ocr@^2.2.1:
562
+  version "2.2.1"
563
+  resolved "https://registry.yarnpkg.com/node-tesseract-ocr/-/node-tesseract-ocr-2.2.1.tgz#465fea1a1acd6720efb582d5f6c2bcbb82cce94d"
564
+  integrity sha512-Q9cD79JGpPNQBxbi1fV+OAsTxYKLpx22sagsxSyKbu1u+t6UarApf5m32uVc8a5QAP1Wk7fIPN0aJFGGEE9DyQ==
565
+
566
+path@^0.12.7:
567
+  version "0.12.7"
568
+  resolved "https://registry.yarnpkg.com/path/-/path-0.12.7.tgz#d4dc2a506c4ce2197eb481ebfcd5b36c0140b10f"
569
+  integrity sha512-aXXC6s+1w7otVF9UletFkFcDsJeO7lSZBPUQhtb5O0xJe8LtYhj/GxldoL09bBj9+ZmE2hNoHqQSFMN5fikh4Q==
570
+  dependencies:
571
+    process "^0.11.1"
572
+    util "^0.10.3"
573
+
574
+process@^0.11.1:
575
+  version "0.11.10"
576
+  resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182"
577
+  integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==
578
+
579
+util@^0.10.3:
580
+  version "0.10.4"
581
+  resolved "https://registry.yarnpkg.com/util/-/util-0.10.4.tgz#3aa0125bfe668a4672de58857d3ace27ecb76901"
582
+  integrity sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==
583
+  dependencies:
584
+    inherits "2.0.3"