What is OCR?

Before going to study Tesseract, we need to know what OCR(Optical Character Recognition) is. In simple words, OCR is the process of extracting the plain text or hOCR from the given document, such as images(like JPG, JPEG, TIFF) and PDFs. After locating the text in the file, OCR will read and recognize the text character in the subsequent steps by using OCR engines and return it. This is how OCR helps machines to identify the text from the given file.

Introduction to Tesseract

Tesseract is an open-source text recognition (OCR) Engine written in c/c++ and works on Windows, macOS, and Linux, and comes…

In the current era, everyone must think about choosing a career path in IT in order to make their life better.

I have contributed to the below article along with Sanjeepan Sivapiran, and Thivvyan Karuneswaran which was published through Youth Govern SL.




Nodemailer is a module for Node.js applications to send emails between different email hosts using different transport methods. It is a single module with zero dependencies with a heavy focus on security (TLS/STARTTLS). It supports Unicode and Windows. We can also send text and HTML content.

Migrating Nodemailer from v2 to v3 has dropped some features that were available in v2 and introduced some new ones.

  • All dependencies were dropped
  • All templating is gone
  • OAuth2 authentication
  • Delivery status notification
  • Calendar Events


Node.js v6.0.0 or newer.

More about Nodemailer - refer: nodemailer.com


What is SMTP? SMTP is part of the…

(A) Why the Bellman-Ford algorithm cannot handle negative weight cycled graphs as input?

Generally, the Bellman-Ford algorithm gives an accurate shortest path in (N-1) iterations where N is the number of vertexes, but if a graph has a negative weighted cycle, it will not give the accurate shortest path in (N-1) iterations. It acquires more iteration and reduces the cost, but it does not go to end. Therefore we cannot handle the negative weighted cycle by using the Bellman-Ford algorithm.

(B) What is the purpose of the priority queue in Dijkstra’s Algorithm?

The priority queue selects the next vertex so…

Running time of Breath-First-Search is (V+E), where V — number of vertexes and E — number of edges.

Pseudocode for BFS.

· Enqueue and dequeue operations take O(1) time, so the total time for queuing is O(V).

· Since each adjacency list is explored at most once the sum of all the adjacency list is O(E). So the total time for exploring adjacency lists is O(E).

Therefore the total running time of BFS is O(V+E).

There are two types of data structures used to store data differently.

  1. Direct access table — The size of an array depends on the size of index values.
  2. Hash table — The size of an array does not depend on the size of index values.

What is a Hash Table?

A hash table is an unordered data structure to store data uniformly across an array. It maps keys with their corresponding values, where each key has a unique index. It supports insert, search and delete operations with worst-case time complexity of O(1). We can take it out of these data…

Charangan Vasantharajan

Undergraduate, Computer Science and Engineering, University of Moratuwa

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store