[{"data":1,"prerenderedAt":533},["ShallowReactive",2],{"project-12694004":3},{"id":4,"name":5,"line":6,"line_source":7,"title":8,"url":9,"domain":10,"maker":11,"posted_at":12,"year":13,"points":14,"comments":15,"rank_in_year":16,"shown_in_year":17,"top":18,"tier":19,"category":20,"subcategory":21,"format":22,"keywords":23,"reception":29,"sentiment":30,"stance_mix":31,"scored_comments":35,"aspects":36,"strip":46,"post_text":49,"what":50,"said":97,"maker_in_thread":210,"shape":217,"grid":222,"attempts":495,"same_week":496,"maker_shows":48,"maker_hidden":525,"reader_version":526,"card":527},"12694004","Tesseract.js","Pure JavaScript OCR for 60 Languages","title","Show HN: Tesseract.js – Pure JavaScript OCR for 60 Languages","https:\u002F\u002Fgithub.com\u002Fnaptha\u002Ftesseract.js","github.com","bijection",1476287982,2016,727,97,12,2264,1,"legend","languages","ocr library","library",[24,25,26,27,28],"ocr","javascript","text recognition","emscripten","browser","mixed",-0.187,{"positive":32,"neutral":33,"mixed":18,"critical":34},7,22,16,46,{"performance":37,"idea":39,"execution":41,"docs":43,"design":45},{"positive":18,"critical":38},11,{"positive":40,"critical":18},4,{"positive":42,"critical":18},0,{"positive":42,"critical":44},2,{"positive":42,"critical":18},[47,42,47,48,18,47,47,18,18,42,18,42,42,42,42,42,42,42,42,18,42,47,18,47,47,48,18,18,48,18,18,48,47,47,18,47,47,47,48,18],3,5,null,{"problem":49,"audience":51,"pricing":49,"motivation":49,"time_to_build":49,"stack":63,"openness":94,"stage":95,"team_size":96},{"value":52,"source":53,"evidence":54},"JavaScript developers needing OCR","inferred",[55,59],{"id":56,"by":57,"text":58},"12698081","zelon88","Does this mean I can implement Tesseract on my home server without using php's shell_exec to perform magic on my files? I can just use Jscript instead? Cool! My current HRCloud2…",{"id":60,"by":61,"text":62},"12694430","gentleteblor","I've always wanted to use Tesseract on .NET projects but it was always clumsy (wrappers). This looks like it'll make things easier. Thanks for putting this out.",[64,71,80,88],{"value":65,"source":66,"evidence":67},"JavaScript","maker",[68],{"id":69,"by":11,"text":70},"12698130","Yep, this is completely client side :) You can even host the external language files yourself as described in the readme: https:\u002F\u002Fgithub.com\u002Fnaptha\u002Ftesseract.js#local-installation",{"value":72,"source":66,"evidence":73},"Emscripten-compiled Tesseract (C++)",[74,77],{"id":75,"by":11,"text":76},"12694294","It's a wrapper around an Emscripten port of that library. See https:\u002F\u002Fgithub.com\u002Fnaptha\u002Ftesseract.js-core",{"id":78,"by":11,"text":79},"12695420","That's interesting! Given that Tesseract.js wraps an Emscripten'd copy of Tesseract, I would have expected close to identical performance. This might have to do with the way we…",{"value":81,"source":82,"evidence":83},"Leptonica","commenter",[84],{"id":85,"by":86,"text":87},"12696237","jaytaylor","What do you mean by \"emscripten'd\"? Is Tesseract.js using emscripten to effectively bundle the 150KLOC of C\u002FC++ from tesseract-ocr and the upstream dependency on leptonica [0]?…",{"value":89,"source":66,"evidence":90},"Web Workers",[91],{"id":92,"by":11,"text":93},"12695971","Tesseract.js uses webworkers in the browser.","open_source","launched","unknown",{"praise":98,"objections":112,"requests":150,"questions":171,"alternatives":185},[99,105],{"value":100,"source":82,"evidence":101},"Useful client-side OCR that is easy to use from JavaScript",[102,103,104],{"id":56,"by":57,"text":58},{"id":69,"by":11,"text":70},{"id":60,"by":61,"text":62},{"value":106,"source":82,"evidence":107},"Impressive that it runs as pure JS",[108],{"id":109,"by":110,"text":111},"12694367","KiwiCoder","Impressive that this is pure JS, however trying an image cut from the page itself gave this result > Dropan Enghsh Wage on (Ms page to OCR m Should be > Drop an English image on…",[113,128,136,143],{"value":114,"source":82,"evidence":115},"Accuracy is poor on small or screen-resolution text",[116,120,123,127],{"id":117,"by":118,"text":119},"12694478","pyronite","The text detection is lacking in comparison to Google's Vision API. Here is a real-life comparison between Tesseract and Google's Vision API, based on a PDF a user of our website…",{"id":121,"by":86,"text":122},"12695343","Your comment (zoomed in Chrome on Win 10): http:\u002F\u002Fi.imgur.com\u002FuuFhw90.png Tesseract.js analysis: ``` Although Googie's API is certaihiy better, Tesseract.js should work simiiarly…",{"id":124,"by":125,"text":126},"12694507","greenpizza13","Excited about this... but the OCR quality seems to be very bad. Maybe it's not optimized for recognizing black text on a white background. For example, I took a screenshot of…",{"id":109,"by":110,"text":111},{"value":129,"source":82,"evidence":130},"Much worse than Google Cloud Vision",[131,132],{"id":117,"by":118,"text":119},{"id":133,"by":134,"text":135},"12695183","driverdan","We spent a decent amount of time evaluating Abbyy vs Tesseract vs Cloud Vision. Cloud Vision wins hands down and is very reasonably priced.",{"value":137,"source":82,"evidence":138},"Described as pure JS is misleading since it is compiled C++",[139],{"id":140,"by":141,"text":142},"12699221","daliwali","The title and description are very misleading: this is technically \"pure JavaScript\" but the JS is compiled from the original C++ library of the same name using emscripten. I…",{"value":144,"source":82,"evidence":145},"Name overlaps with the existing tesseract-ocr project",[146],{"id":147,"by":148,"text":149},"12694280","employee8000","Is this at all affiliated with the already-existing tesseract OCR library? It doesn't seem to be from my cursory check so if not you need to rename your library, because you're…",[151,157,164],{"value":152,"source":66,"evidence":153},"Stroke width transform preprocessing",[154],{"id":155,"by":11,"text":156},"12698365","This would be really cool! We would welcome a pull request and \u002F or link to any downstream project working on this. In a similar vein, we've been considering adding the stroke…",{"value":158,"source":82,"evidence":159},"More documentation on training",[160],{"id":161,"by":162,"text":163},"12699669","z3t4","More instructions, like how to train it, would be nice.",{"value":165,"source":82,"evidence":166},"Promise interface with progress support",[167],{"id":168,"by":169,"text":170},"12695353","AgentME","Why the promise-like interface? If it returned a promise with a this-returning progress method monkey-patched onto it, then you could use it otherwise like a regular promise: ```…",[172,179],{"value":173,"source":82,"evidence":174},"Is it slower than the command-line Tesseract?",[175],{"id":176,"by":177,"text":178},"12706374","codemode","Is it true, that original implementation of tesseract exexuted from commandline is faster than javascript translated version?",{"value":180,"source":82,"evidence":181},"How does it compare with Ocrad.js?",[182],{"id":183,"by":184,"text":180},"12723672","niutech",[186,191,195,199,206],{"value":187,"source":82,"evidence":188},"Google Cloud Vision API",[189,190],{"id":117,"by":118,"text":119},{"id":133,"by":134,"text":135},{"value":192,"source":82,"evidence":193},"Tesseract (tesseract-ocr)",[194],{"id":121,"by":86,"text":122},{"value":196,"source":82,"evidence":197},"ABBYY",[198],{"id":133,"by":134,"text":135},{"value":200,"source":82,"evidence":201},"OCR.space API",[202],{"id":203,"by":204,"text":205},"12695987","noteone","This is the correct pricing. One caveat: Even the free tier requires you to enter a credit card. For higher volumes, there is also the OCR.space api. It offers 25,000 free…",{"value":207,"source":82,"evidence":208},"Ocrad.js",[209],{"id":183,"by":184,"text":180},{"comments":16,"answered":40,"key":211},[212,213,216],{"id":155,"text":156},{"id":214,"text":215},"12694592","Although Google's API is certainly better, Tesseract.js should work similarly if you increase the font size. Screenshots taken on 'retina' devices are around the smallest text it…",{"id":78,"text":79},{"commenters":218,"max_depth":219,"maker_replies":16,"first_comment_mins":220,"lifespan_hours":221},69,6,14,114,[223,227,231,234,237,241,244,248,250,254,256,258,259,260,262,266,269,272,275,278,280,283,286,289,292,295,296,299,303,306,307,310,313,316,320,324,327,330,332,334,338,340,343,346,348,351,354,357,360,362,364,366,369,373,375,378,379,381,384,387,390,393,397,399,404,406,408,413,416,417,419,420,422,425,427,430,434,436,440,445,448,450,454,455,457,459,463,466,469,472,475,477,479,484,488,491,494],[224,42,47,225,226,42],"12695703","project\u002Fmixed\u002Fperformance","xigency",[228,42,42,229,230,42],"12695866","other\u002Fneutral\u002Fnone","minism",[232,42,42,229,233,42],"12697744","holografix",[235,42,42,229,236,42],"12698496","jbhatab",[238,42,47,239,240,42],"12697384","project\u002Fneutral\u002Fperformance","Ph0X",[242,42,47,239,243,42],"12697654","kixpanganiban",[245,42,47,246,247,42],"12698284","project\u002Fneutral\u002Fidea","derefr",[155,42,42,249,11,18],"maker\u002Fneutral\u002Fidea",[251,42,48,252,253,42],"12698742","project\u002Fpositive\u002Fnone","SeriousM",[117,18,18,255,118,42],"project\u002Fcritical\u002Fperformance",[214,18,42,257,11,18],"maker\u002Fneutral\u002Fperformance",[121,18,18,255,86,42],[78,18,42,257,11,18],[85,18,47,261,86,42],"maker\u002Fneutral\u002Fexecution",[263,18,47,264,265,42],"12696341","project\u002Fneutral\u002Fexecution","mumphster",[267,18,42,229,268,42],"12695734","brazzledazzle",[270,18,18,255,271,42],"12695750","oriolid",[273,18,18,255,274,42],"12695042","ajacksified",[276,18,42,277,11,18],"12695149","project\u002Fpositive\u002Fperformance",[279,18,47,239,226,42],"12695820",[281,18,18,255,282,42],"12695168","jackhack",[284,18,42,229,285,42],"12701363","Accacin",[287,18,42,229,288,42],"12701544","chris_wot",[290,18,42,229,291,42],"12708322","aargh_aargh",[293,18,47,246,294,42],"12695593","zo1",[133,18,18,255,134,42],[297,18,42,229,298,42],"12697382","emmelaich",[300,18,42,301,302,42],"12695202","other\u002Fneutral\u002Fpricing","doctorcroc",[304,18,42,301,305,42],"12695311","Huppie",[203,18,42,301,204,42],[308,18,42,309,302,42],"12696152","commenter\u002Fneutral\u002Fpricing",[311,18,42,309,312,42],"12696192","ben174",[314,18,42,229,315,42],"12697270","Omnipresent",[317,44,42,318,319,42],"12696316","other\u002Fcritical\u002Fperformance","iplaw",[321,44,42,322,323,42],"12696398","commenter\u002Fneutral\u002Fnone","nabla9",[325,44,42,322,326,42],"12696985","angry-hacker",[328,44,42,322,329,42],"12697729","pitaj",[331,44,42,229,319,42],"12700482",[333,44,42,229,319,42],"12700974",[335,44,42,336,337,42],"12696665","other\u002Fcritical\u002Fnone","ousta",[339,44,42,229,319,42],"12700967",[341,44,42,342,184,42],"12723637","other\u002Fneutral\u002Fdocs",[344,44,42,229,345,42],"12696720","hrehhf",[347,44,42,229,319,42],"12700968",[349,44,42,229,350,42],"12709543","dreamcompiler",[352,44,42,229,353,42],"12697101","danso",[355,44,18,255,356,42],"12698161","fizixer",[358,44,42,359,247,42],"12698324","other\u002Fneutral\u002Fidea",[361,44,42,359,319,42],"12700471",[363,44,42,322,298,42],"12697626",[365,44,42,229,319,42],"12700497",[367,47,47,239,368,42],"12694863","jameslk",[370,47,47,371,372,42],"12696189","project\u002Fneutral\u002Fdocs","dunham",[168,40,18,374,169,42],"project\u002Fcritical\u002Fdesign",[376,40,42,377,11,18],"12695611","maker\u002Fneutral\u002Fdesign",[124,48,18,255,125,42],[380,48,42,257,11,18],"12694549",[382,219,48,277,383,42],"12695434","goatslacker",[385,219,47,239,386,42],"12700375","methyl",[388,32,47,239,389,42],"12697785","userbinator",[60,391,48,392,61,42],8,"project\u002Fpositive\u002Fidea",[394,391,47,395,396,42],"12696699","project\u002Fneutral\u002Fdesign","smarx007",[398,391,48,392,61,42],"12697802",[400,401,18,402,403,42],"12694144",9,"project\u002Fcritical\u002Fexecution","yankyou",[405,401,42,261,11,18],"12694165",[407,401,47,264,403,42],"12694188",[409,410,18,411,412,42],"12694261",10,"project\u002Fcritical\u002Fdocs","mdani",[414,410,42,415,11,18],"12694286","maker\u002Fneutral\u002Fdocs",[56,38,48,392,57,42],[69,38,42,418,11,18],"project\u002Fneutral\u002Fprivacy",[109,16,18,255,110,42],[421,16,42,257,11,18],"12694447",[423,16,42,322,424,42],"12701115","lloeki",[140,426,18,411,141,42],13,[428,220,18,255,429,42],"12694253","slajax",[431,432,48,392,433,42],"12698698",15,"mgalka",[435,34,42,229,86,42],"12697048",[437,438,47,246,439,42],"12694945",17,"zhte415",[441,442,47,443,444,42],"12699186",18,"project\u002Fneutral\u002Fnone","artf",[446,442,42,322,447,42],"12699204","akerro",[449,442,42,322,444,42],"12699222",[451,452,47,239,453,42],"12695835",19,"maaaats",[92,452,42,261,11,18],[176,456,18,255,177,42],20,[458,456,47,239,177,42],"12710194",[460,461,47,443,462,42],"12694252",21,"ckluis",[464,461,42,322,465,42],"12694309","atishay811",[467,461,42,322,468,42],"12694875","talklittle",[470,33,47,443,471,42],"12694789","mrcactu5",[473,33,47,264,474,42],"12695166","someonewithpc",[161,476,47,371,162,42],23,[183,478,42,229,184,42],24,[480,481,47,482,483,42],"12694457",25,"maker\u002Fneutral\u002Fnone","newtons_bodkin",[485,486,48,252,487,42],"12698853",26,"sanketbajoria",[147,489,18,490,148,42],27,"project\u002Fcritical\u002Fidea",[492,489,42,322,493,42],"12694291","wibr",[75,489,42,249,11,18],[],[497,502,507,512,516,520],{"id":498,"name":499,"points":500,"category":501},"12692190","Social Media Fingerprint",911,"security_privacy",{"id":503,"name":504,"points":505,"category":506},"12679597","TagSpaces",361,"productivity",{"id":508,"name":509,"points":510,"category":511},"12677385","Nightlight",195,"dev_tools",{"id":513,"name":514,"points":515,"category":511},"12650936","Patat",167,{"id":517,"name":518,"points":519,"category":511},"12685780","Marathono",165,{"id":521,"name":522,"points":523,"category":524},"12665069","RunMyRobot",162,"hardware",false,"v2",{"id":528,"name":5,"line":6,"ai":525,"cat":20,"year":13,"points":14,"comments":15,"rec":29,"s":529,"top":18,"kw":530,"maker":11,"domain":10,"tier":19,"attempts":42,"strip":531,"url":9,"mix":532,"praise":100,"objection":114,"sub":21},12694004,-0.19,[24,25,26,27,28],"3035133110100000000103133511511533133351",[32,33,18,34],1794036548524]