├── .gitignore ├── README.md ├── css └── style.css ├── demo.gif ├── do-not-go-gentle.mp4 ├── index.html ├── package-lock.json └── package.json /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | Tesseract.js Video 2 | ================== 3 | 4 | An example to demo how to use tesseract.js to recognize a video clip, you can use it with other streaming cases like webcam. 5 | 6 | ![](./demo.gif) 7 | 8 | ## Install 9 | 10 | ``` 11 | $ npm install 12 | ``` 13 | 14 | Visit http://localhost:3000 15 | -------------------------------------------------------------------------------- /css/style.css: -------------------------------------------------------------------------------- 1 | html, body { 2 | width: 100%; 3 | height: 100%; 4 | margin: 0; 5 | } 6 | 7 | .bold { 8 | font-weight: bold; 9 | } 10 | 11 | #root { 12 | width: 100%; 13 | height: 100%; 14 | display: flex; 15 | flex-direction: row; 16 | justify-content: center; 17 | align-items: center; 18 | padding: 0px 16px; 19 | } 20 | 21 | #sep { 22 | width: 16px; 23 | } 24 | 25 | #messages { 26 | width: 640px; 27 | height: 360px; 28 | overflow: auto; 29 | } 30 | -------------------------------------------------------------------------------- /demo.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jeromewu/tesseract.js-video/e4d860b834717f0b699827a87feb0a00c053c111/demo.gif -------------------------------------------------------------------------------- /do-not-go-gentle.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jeromewu/tesseract.js-video/e4d860b834717f0b699827a87feb0a00c053c111/do-not-go-gentle.mp4 -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Tesseract.js Video Streaming Recognition 6 | 7 | 8 | 9 | 10 |
11 | 14 |
15 |
16 |
17 |
18 | 68 | 69 | 70 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "tesseract.js-video", 3 | "version": "1.0.0", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "async": { 8 | "version": "1.5.2", 9 | "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", 10 | "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=" 11 | }, 12 | "colors": { 13 | "version": "1.0.3", 14 | "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", 15 | "integrity": "sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=" 16 | }, 17 | "corser": { 18 | "version": "2.0.1", 19 | "resolved": "https://registry.npmjs.org/corser/-/corser-2.0.1.tgz", 20 | "integrity": "sha1-jtolLsqrWEDc2XXOuQ2TcMgZ/4c=" 21 | }, 22 | "debug": { 23 | "version": "3.2.6", 24 | "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", 25 | "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", 26 | "requires": { 27 | "ms": "^2.1.1" 28 | } 29 | }, 30 | "ecstatic": { 31 | "version": "3.3.2", 32 | "resolved": "https://registry.npmjs.org/ecstatic/-/ecstatic-3.3.2.tgz", 33 | "integrity": "sha512-fLf9l1hnwrHI2xn9mEDT7KIi22UDqA2jaCwyCbSUJh9a1V+LEUSL/JO/6TIz/QyuBURWUHrFL5Kg2TtO1bkkog==", 34 | "requires": { 35 | "he": "^1.1.1", 36 | "mime": "^1.6.0", 37 | "minimist": "^1.1.0", 38 | "url-join": "^2.0.5" 39 | } 40 | }, 41 | "eventemitter3": { 42 | "version": "4.0.0", 43 | "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.0.tgz", 44 | "integrity": "sha512-qerSRB0p+UDEssxTtm6EDKcE7W4OaoisfIMl4CngyEhjpYglocpNg6UEqCvemdGhosAsg4sO2dXJOdyBifPGCg==" 45 | }, 46 | "follow-redirects": { 47 | "version": "1.9.0", 48 | "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.9.0.tgz", 49 | "integrity": "sha512-CRcPzsSIbXyVDl0QI01muNDu69S8trU4jArW9LpOt2WtC6LyUJetcIrmfHsRBx7/Jb6GHJUiuqyYxPooFfNt6A==", 50 | "requires": { 51 | "debug": "^3.0.0" 52 | } 53 | }, 54 | "he": { 55 | "version": "1.2.0", 56 | "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", 57 | "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==" 58 | }, 59 | "http-proxy": { 60 | "version": "1.18.0", 61 | "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.0.tgz", 62 | "integrity": "sha512-84I2iJM/n1d4Hdgc6y2+qY5mDaz2PUVjlg9znE9byl+q0uC3DeByqBGReQu5tpLK0TAqTIXScRUV+dg7+bUPpQ==", 63 | "requires": { 64 | "eventemitter3": "^4.0.0", 65 | "follow-redirects": "^1.0.0", 66 | "requires-port": "^1.0.0" 67 | } 68 | }, 69 | "http-server": { 70 | "version": "0.11.1", 71 | "resolved": "https://registry.npmjs.org/http-server/-/http-server-0.11.1.tgz", 72 | "integrity": "sha512-6JeGDGoujJLmhjiRGlt8yK8Z9Kl0vnl/dQoQZlc4oeqaUoAKQg94NILLfrY3oWzSyFaQCVNTcKE5PZ3cH8VP9w==", 73 | "requires": { 74 | "colors": "1.0.3", 75 | "corser": "~2.0.0", 76 | "ecstatic": "^3.0.0", 77 | "http-proxy": "^1.8.1", 78 | "opener": "~1.4.0", 79 | "optimist": "0.6.x", 80 | "portfinder": "^1.0.13", 81 | "union": "~0.4.3" 82 | } 83 | }, 84 | "mime": { 85 | "version": "1.6.0", 86 | "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", 87 | "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" 88 | }, 89 | "minimist": { 90 | "version": "1.2.0", 91 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", 92 | "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" 93 | }, 94 | "mkdirp": { 95 | "version": "0.5.1", 96 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", 97 | "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", 98 | "requires": { 99 | "minimist": "0.0.8" 100 | }, 101 | "dependencies": { 102 | "minimist": { 103 | "version": "0.0.8", 104 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", 105 | "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" 106 | } 107 | } 108 | }, 109 | "ms": { 110 | "version": "2.1.2", 111 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 112 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" 113 | }, 114 | "opener": { 115 | "version": "1.4.3", 116 | "resolved": "https://registry.npmjs.org/opener/-/opener-1.4.3.tgz", 117 | "integrity": "sha1-XG2ixdflgx6P+jlklQ+NZnSskLg=" 118 | }, 119 | "optimist": { 120 | "version": "0.6.1", 121 | "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", 122 | "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", 123 | "requires": { 124 | "minimist": "~0.0.1", 125 | "wordwrap": "~0.0.2" 126 | }, 127 | "dependencies": { 128 | "minimist": { 129 | "version": "0.0.10", 130 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", 131 | "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=" 132 | } 133 | } 134 | }, 135 | "portfinder": { 136 | "version": "1.0.24", 137 | "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.24.tgz", 138 | "integrity": "sha512-ekRl7zD2qxYndYflwiryJwMioBI7LI7rVXg3EnLK3sjkouT5eOuhS3gS255XxBksa30VG8UPZYZCdgfGOfkSUg==", 139 | "requires": { 140 | "async": "^1.5.2", 141 | "debug": "^2.2.0", 142 | "mkdirp": "0.5.x" 143 | }, 144 | "dependencies": { 145 | "debug": { 146 | "version": "2.6.9", 147 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 148 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 149 | "requires": { 150 | "ms": "2.0.0" 151 | } 152 | }, 153 | "ms": { 154 | "version": "2.0.0", 155 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 156 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" 157 | } 158 | } 159 | }, 160 | "qs": { 161 | "version": "2.3.3", 162 | "resolved": "https://registry.npmjs.org/qs/-/qs-2.3.3.tgz", 163 | "integrity": "sha1-6eha2+ddoLvkyOBHaghikPhjtAQ=" 164 | }, 165 | "requires-port": { 166 | "version": "1.0.0", 167 | "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", 168 | "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=" 169 | }, 170 | "union": { 171 | "version": "0.4.6", 172 | "resolved": "https://registry.npmjs.org/union/-/union-0.4.6.tgz", 173 | "integrity": "sha1-GY+9rrolTniLDvy2MLwR8kopWeA=", 174 | "requires": { 175 | "qs": "~2.3.3" 176 | } 177 | }, 178 | "url-join": { 179 | "version": "2.0.5", 180 | "resolved": "https://registry.npmjs.org/url-join/-/url-join-2.0.5.tgz", 181 | "integrity": "sha1-WvIvGMBSoACkjXuCxenC4v7tpyg=" 182 | }, 183 | "wordwrap": { 184 | "version": "0.0.3", 185 | "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", 186 | "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=" 187 | } 188 | } 189 | } 190 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "tesseract.js-video", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "scripts": { 7 | "start": "http-server -p 3000" 8 | }, 9 | "author": "", 10 | "license": "ISC", 11 | "dependencies": { 12 | "http-server": "^0.11.1" 13 | } 14 | } 15 | --------------------------------------------------------------------------------