Reading Barcodes in the 21st Century

1D & 2D Barcodes
There used to be a time when barcodes were used for one thing: checking out at the grocery store. Nowadays you can hardly go anywhere without seeing one; the technology emerged and we see them used for tracking, inventory control, marketing, forms identification, on driver’s licenses, and much more. I once came across a mobile application that allowed you to scan the barcode on any item, and return both its local and online prices. With the many types of 1D and 2D barcodes, the possibilities are endless!

LEADTOOLS has more than ten years of expertise in reading and writing barcodes. Contrary to what one may think, all barcode engines are not created equally. Important factors programmers consider include speed, accuracy, ease of use and ability to read noisy or damaged barcodes. LEADTOOLS provides the fastest, most accurate, and easy to use barcode SDK available today. Our high-level toolkit allows you to extract the barcode data from any image in less than five lines of code. It comes in a variety of platforms for desktop, web and mobile so regardless of your development preference, LEADTOOLS can help you add barcode reading and writing functionality to your application.

Would you like to learn more about the LEADTOOLS Barcode SDK? Check out our Code Project article where we talk about a few more features, and provide sample code for reading barcodes.

Thanks,
Otis Goodwin
Posted in Barcode, Document Imaging | Tagged , , , , , , , , | Leave a comment

PACS Storage Server – The LEADTOOLS Way

There are many factors to consider when developing a PACS solution. You must think about how to support all the various flavors of DICOM Data Sets, implementing DICOM communication and security, designing the UI and database, and let’s not forget about the 4000+ page DICOM specification! You may have a solution or individual components for each of these core requirements, but you are still faced with the daunting task of integrating them into an enterprise solution that can be easily customized for each client.

DICOM PACS Storage Server Screenshot
LEADTOOLS has taken its many years of medical imaging experience, feedback from our customers, and valuable information from our medical industry partners to develop our most versatile and robust PACS solution to date. Instead of building your solution from the ground up using several low level components, LEADTOOLS has done 99% of the development work for you by providing a full-fledged PACS Storage Server application with full access to the source code. Even that may sound intimidating given the thousands of lines of code to sift through, but it has been componentized in such a way that it is easily customizable for any developer.

Sound interesting? Head over to my CodeProject article where I dive into our new PACS Storage Server in more detail. You can also watch a video tutorial produced by our support staff.

Thanks,
Otis Goodwin
Posted in Medical Imaging | Tagged , , , , | Leave a comment

Distributed Transcoding

A while back, we had a customer that wanted to transcode video files into several different formats as quickly as possible. In this particular case, he had access to as much computing power as one could imagine. Even with his large array of high-end servers, the customer was expecting more speed. Initially, our support staff found they weren’t taking full advantage of our encoders’ multi-threading capabilities. Therefore our first suggestion was to make use of all the available CPU cores. While this significantly improved their transcoding time, it still didn’t achieve their goals.

Although we maximized the processing power on a single server, there were plenty of other servers in their farm just waiting to be used. Using multiple servers to each convert a single file would be acceptable for large batches of small files, but it would provide no benefit for large videos. Since LEADTOOLS has the ability to split and merge files, our next idea for improvement was to split the file into multiple pieces, transcode each piece on a different server, then merge the pieces back together. Splitting and merging (or demultiplexing and remultiplexing) are much faster operations than transcoding, so they would have minimal impact on the overall conversion time. We threw together a quick POC, and in a matter of hours we were using an entire farm of machines to transcode a single file. We were able to cut down the conversion time of a 1.22 GB video from ~23 minutes on a single server to ~9 minutes on the farm of servers. That was a speed increase of 61%!

The performance was great, but there was one problem. In some cases, there were slight glitches between each section that was merged together. The audio and video would jump or hiccup if the timestamps didn’t line up perfectly, so we needed a way to intelligently choose and synchronize the split points. Our multimedia engineering team went to work and returned with two new DirectShow filters that discovered the perfect split/merge points, resulting in a smooth playback indistinguishable from the video transcoded on a single server.

These filters have not yet been released but I have played with them quite a bit. Not only are the results amazing, but there is still potential to make this an even more efficient process. If you read my last blog about our Cloud SDK, you can probably see where I am going with this. By integrating this new functionality with our Cloud SDK, you can create powerful applications that identify which servers in your farm are available, and use these machines to process a single task as fast as possible.

Thanks,
Otis Goodwin
Posted in Multimedia Imaging | Tagged , , , , , | Leave a comment

Birth of the Cloud

As with any software development company, LEAD has several test machines in various departments which we use to run lengthy stability tests, set up specific operating systems or environments, and pretty much anything else you wouldn’t want to use your development machine for. A while back, we made some significant changes to our multimedia toolkit including several new formats, codec optimizations, and improved streaming support. During the development and testing process, our multimedia team commandeered every available test machine in the support and QA departments for running their lengthy transcoding tests.

As if it wasn’t enough that every test machine in my department was locked up, they started testing on our personal work machines as well. There were many times my work would be interrupted with “Hey, can you convert this file for me? Just let it run in the background while you work.” Despite my reluctance, they were right! Other than the couple of minutes to set up their test and report the results upon completion, it didn’t affect my work in any way.

Cloud SDK Diagram


After the multimedia team had bothered enough people around the office about using their machine, we all came together and started tossing ideas around. What if the multimedia team could use my machine for their testing, but not bother me in the process? What if I let them borrow 50% of my CPU for their test and use it however they want? Instead of having to physically be at my machine to set up the test, what if they could simply add their tasks to some server that delegates them to different machines on the network? What if that server divided the tasks based on the current load of each machine, how many tasks it was working on, and several other factors?

Thus the LEADTOOLS Cloud SDK was born. This SDK would be the basis for a distributed computing framework that would not only make everyone’s life around LEAD a bit easier, but would create a stellar product for our customers!

Otis Goodwin
Posted in General | Tagged , , | Leave a comment

Working With PDFs

PDF is one of the most popular formats for exchanging and archiving documents. It supports various forms of security, metadata, and the ability to store all of the necessary display information such as fonts, vector and images. In short, PDF (and PDF/A in particular) is designed with long-term archival and paper document replacement in mind because it will look the same today, tomorrow, and 20 years from now.

Because of its popularity, PDF support is essential to any Document Imaging application. This includes reading, writing, editing, merging, splitting, and virtually any other PDF-related task. It is also important to handle various types of PDFs (image-based, searchable, vector, etc), as one can never be certain what types of documents will enter their system.

The LEADTOOLS PDF SDK provides developers all of the functionality they need to work with PDF files. Check out my CodeProject article where I discuss some of the features of our PDF SDK.

Otis Goodwin

Posted in Document Imaging, PDF | Tagged , | 2 Comments