Description and Target

In a Nutshell

EzBubbles "vanilla" is a Bubble Test/Survey/Census and OMR Framework. Everything from the data model to the printing (or on-line option) scanning, correction and publication of results. Ideal for the Government and Education Sectors who are tied to costly OMR or Specialized Census Technologies.

EzBubbles comes in vertical flavors, that is, pre-configured set of applications that work almost directly out of the box. The EzBubbles product includes a toolkit to build custom products that fall outside the scope of our ready-made vertical products.

Overview of the EzBubbles Platform

EzBubbles Overview


Bubble sheet and OMR technology has many applications. Anything from industry, business, medical, education and government.

Key Benefits and Features


  • Single model to multiple media:
    • Design your model once.
    • Deploy on multiple media: Paper, Web, Phone, Pad, etc.
    • Only solution in the market that does this.
  • High-volume paper scanning: 60-90ppm, including decoding and storage!
  • Support for high-speed off-the shelf ADF scanners: Canon, Fujitsu
  • Commercial flat-bed scanners support or medium-level ADF: HP
  • Able to decode scanned images sent by e-mail, ftp, etc.!
  • High volume database design: millions or records, no problem!
  • Completely Open Source, no vendor lock-in
  • Based on standard, widely available and open technologies (SVG, LaTeX, PS, etc.).
  • Runs native on Linux, FreeBSD, MacOSX and many more.
  • Fully standards compliant, supports multi-byte character sets (e.g. UTF)
  • I18N, L10N


Model Designer

The Model Designer allows users to define just about any type of Test, Survey, or Census model imaginable. The designer comes with predefined Primitive Classes that clients use to derive their own Object Classes. The user-defined object classes are then used as Instantiated Objects in sections and sub-sections of the test or survey instrument.

Basic Elements: Primitive and Object Classes

EzBubbles allows the creation of user-defined elements called "Object Classes", which are based on primitive classes already predefined in the Model Designer SDK.

The EzBubbles SDK includes a library of skeletons to build anything from the simplest survey, to medium complexity Academic Testing, and even advanced uses like "Multidimensional Inventories" (such as those used for vocational exploration). The skeletons not only include sample objects and models for each type of instrument, but also the optimized correction/analysis algorithms that are usually applied to the captured data.

  • Basic primitive classes included in the SDK:
    • Numeric
    • Alphanumeric
    • Alphabetical
    • Boolean
    • Date
    • Enumerations (text and numeric)
  • Example of user-defined Object Classes:
    • Name Field, 40 chars (Alphabetical)
    • ID Number Field, 18 chars (Alphanumeric)
    • Sex (Enumeration)
    • Test-style Multiple Choice Answer (Enumeration)
    • Career Preference (Enumeration)
    • Has Mortgage? (Boolean)
    • Salary Range (Enumeration)
  • User-defined Object Classes have attributes such as:
    • Type (arbitrary, user defined)
    • Prompt text
    • Options (the actual bubbles)
    • On/Off value/weight per Option

Example use of Object Classes

An Object Class "Name Type" with 40 characters, of type "Identification Data" [1] , from the Alphabetical Primitive and then use it on a survey model sheet in section "Personal Information" object #1 presented with the text "Last Name". This allows for user-defined object classes to be re-used on different models. Versions of both objects classes and models are stored by EzBubbles to allow the decoding of historical data.

The Structure Elements: Sections and Subsections

EzBubbles allows the sheets to be modeled in Sections and Subsections, and the subsections contain the instantiated user defined object classes [2] .

Paper Sheet Options and Scanning Regions

EzBubbles uses an OMR technology that does not use or need timing marks. This allows for flexible object placement on the sheet, and the use of off-the shelf SVG drawing and design packages (such as Inkscape).

The scanning regions are defined at the subsection level. That is, each subsection in the model has the approximate Top, Bottom, Left and Right coordinates of it's absolute spacial position within the scanned image (relative to the page margins).

Subsections can have vertical or horizontal bubbles, and have many options such as borders, labels, text boxes for capturing hand written text, etc. The OMR library is extremely flexible and smart, and can use several "prominent" objects in the page to re-calculate the relative positions of each object in relation to these prominent objects, so it doesn't matter if the image is skewed, stretched or scaled, but unless the is actual data missing from the image (severely skewed, torn or folded page) it will be able to locate the section successfully.

Electronic Sheet Options

Because the same instrument model is able to render on both paper and electronic media, there are many options available for electronic media that are unavailable for paper. For example, Boolean objects may be rendered as check-boxes instead of radio-buttons, and sections and sub-sections can be grouped into "Page Views" that will can be presented to the user as sequential pages (wizard-style) or as notebook tabs, or other any other applicable widget, depending on the capabilities of the specific electronic format and/or device.

Storage Options

The final part of the instrument model is to define the actual structure of the data to be stored, also known as the data model, though in EzBubbles the storage method is a lot more flexible than traditional RDBMS(a.k.a SQL)-based systems. EzBubbles uses a hybrid Object-Relational (PostgreSql) and No-SQL storage system (CouchDB). Model structure and other data that require referential integrity or transactions is kept on the ORDBMS while the massive and flexible data is stored in the JSON-based NoSql database. Particularly the captured instrument data is stored in the NoSQL database both for performance and scalability reasons, and also given the flexibility of the JSON data models within CouchDB. Future versions of EzBubbles are scheduled to incorporate advanced schema definitions such as RelaxNG which would allow, for example, common validation of both JSON and XML data simultaneously, and avoid the limitations of more traditional schema definition techniques such as DTD and XSD.

SVG Generator

As mentioned above, the user-defined object classes are based on pre-defined primitives. These primitives are tied to specific rendering schemes in both paper and electronic form, and have attributes that allow the user to further refine the presentation options. For paper sheets it would be very tedious for a designer to have to create the graphical objects manually, and would probably be very error-prone as they would be no guarantee that the sheet is a faithful representation of the structural model in the system.

Because of this, the EzBubbles platform provides the capability to automatically generating an SVG representation of the instrument model. This includes all the labels, bubbles, options, texts and even some decoration items such as logos, instructions, headers and footers. After generation, the SVG can be downloaded and edited in any SVG-capable graphics editor. All the generated objects are correctly grouped, so the graphics designer is able to easily break long sections and re-arrange them at will on the page, without damaging the bubble separation, labels, section texts etc.

SVG Editor

Any SVG editor can be used, but Yabarana recommends Inkscape and it's usually bundled in any Linux or *BSD distribution, and also available on the Mac via MacPorts (or similar).

After the sheet is edited, it is then zipped and uploaded back to the EzBubbles platform for the "Generation Process"


Generation in EzBubbles refers to a set of tools to generate the physical test, survey or census sheets which are usually serialized (unique identifier) and many times even personalized (pre-printed information of the person that will answer it).

These processes usually apply only to paper-based tests, though they may apply for serialized and/or personalized electronic media such as editable PDFs and other similar media. Sometimes it even applies to Web-based presentations as well, and although there is no discrete generation process as such, some of the Generations tools are still used to personalize or serialize the Web-based instruments.

Generation Types

EzBubbles supports 3 main types of generation and printing processes for paper-based instruments:

  • Complete Page Generation
  • Variable Data Layer Generation
  • Backdrop + Data (No Generation)

Complete Page Generation

This set of tools is able to take a data file of contacts and generate individualized PS or PDF files that can be printed directly on any printing press. It can generate bar-codes, and serial numbers for each sheet as well. The way it works is by rendering a PS/PDF document of the variable data (using LaTex) and layers it on top of the fixed design backdrop. It can group PS/PDF files into packages for easy printing (e.g. packages of 4000 PDFs each).

This type of generation is highly CPU-intensive so EzBubble Generation Applications support distributed computing environment must be usually be set-up.

Base Technology Stack
Licensing, Distribution and Pricing

Almost all of the EzBubble components are published and/or maintained through their original open Source projects (see Base Technology Stack above). The packaging of the complete suite, documentation methodology and support package is what is actually licensed, that is, the distribution itself, much like the RedHat Enterprise Linux distribution.

Site License SDK:The EzBubbles Framework can be licensed as a lifetime site license SDK (Software Development Kit) including a development support contract through the duration of your project. A typical site license starts at $10,000 and includes training and support for one year. There are no royalties to use EzBubbles and the developed solution belongs to the client, although redistribution of some components will need previous authorization by Yabarana.

Turn Key:The EzBubbles Framework can also be licensed as a turn-key solution based on your specific needs. This is also a lifetime site-license with no royalties on usage, and completely Open Source to the client (no vendor lock-in). Depending on the negotiation, Yabarana may reserve rights over the final solution.

Public Project:We are looking for a sponsor to finance the publishing of the complete EzBubbles Framework to the public under a Free Software or Open source license. This requires significant effort, and with the adequate financial support we could set-up and help maintain a public project until it reaches critical mass and self-sustainability.