├── .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 | 
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 |
--------------------------------------------------------------------------------