Many of AxAp's capabilities are based on Internet-based resources. Aside from providing improved access to web pages, it may use various cloud computing services. For example, AxAp might ask Google to identify or extract information from an image or provide route planning information.

Web Sites

Web sites are set up to support interactive use, often making unspoken assumptions about the user. For example, they may "hide" text inside images or video content. JavaScript and other technologies can also impede access, both for blind users and for programs such as AxAp.

Fortunately, most sites follow HTML standards and conventions, at least to the point that common web browsers can handle. So, as long as AxAp can successfully interact with a site, it should be able to present the user with the site's content, provide requested transformations, and enable user interaction.

In many cases, screen scraping (etc) will allow AxAp to harvest structural and stylistic information. Harvesting that is based on HTML standards and conventions can be specified in a generic, robust, and reliable manner. However, site-specific encodings may cause the scraping software to be "brittle" (requiring changes when the site is modified).

Web Services

Many sites (especially large ones) provide web services, by means of a defined API. Although each service tends to have its own API, the interface (and thus, the accessing code) can be expected to remain stable over time.


If the user wants AxAp to have certain information ready upon request, she can ask AxAp to use selected resources on her behalf. This might occur "in the background" during an interactive session or while the user is otherwise engaged (e.g., away from the computer).

However, AxAp will always be acting on behalf of the user. So, the user must provide any required authorization data (e.g., user name, password) to the local AxAp instance. Also, any usage charges (etc) will be the user's responsibility.

This approach ensures that the AxAp Project doesn't have to get involved with authorizations, privacy, etc. (Whew!) Also, any limits or charges a site might impose, based on the amount of access, will apply to individual users (rather than the entire AxAp community).


Google provides a lot of web service APIs. Some are independent; others are part of the Google Cloud Platform.


Google Images could be very handy for identifying images, finding related web sites, etc. If the image is (or can be put) online, a search can be initiated as follows:

However, the resulting web page contains an unbelievable amount of minified JavaScript. So, this may not be a great option for creating a blind-accessible access tool.


Many of the Google Maps APIs allow a large number of free requests per day. For details, see the Pricing and Plans page. Here is a selected sampling of the available APIs:

OCR (Drive, Docs)

Google Drive can convert PDF and photo files to text. It accepts GIF, JPEG, PNG, and multipage PDF documents as input and produces styled output (in Google Docs format). Google Docs can then be used to output the document in a range of formats (e.g., DOC, EPUB, HTML).

In summary, we can begin with an image and end up with structured, styled text. Both the input and the output can be in any of several formats. We "just" need to route versions through several external services.

Fortunately, Elixir and Phoenix offer a variety of ways to encode this in an efficient manner, including assorted ways of using of pipelines, agents, etc. Unfortunately, achieving good, fail-soft performance without breaking usage limits and other criteria is still tricky.

So, I'm delighted that José Valim announced GenStage, "a new Elixir behaviour for exchanging events with back-pressure between Elixir processes". My current notion is to create a GenStage instance that handles specified web interactions (e.g., routing a document version through a specified server). These instances can then be pipelined together to achieve specific data flows.


The Google Cloud Vision API enables developers to understand the content of an image by encapsulating powerful machine learning models in an easy to use REST API. It quickly classifies images into thousands of categories (e.g., "sailboat", "lion", "Eiffel Tower"), detects individual objects and faces within images, and finds and reads printed words contained within images.

The Google Cloud Platform offers a number of interesting services. Sadly, I haven't found any indication that the general public can use them (like most Google Maps APIs) for free in limited amounts.


OpenStreetMap provides free access to searchable, structured geographic data. So, it could be used for creating customized maps, route planning, etc.

This wiki page is maintained by Rich Morin, an independent consultant specializing in software design, development, and documentation. Please feel free to email comments, inquiries, suggestions, etc!

Topic revision: r19 - 23 Jul 2016, RichMorin
This site is powered by Foswiki Copyright © by the contributing authors. All material on this wiki is the property of the contributing authors.
Foswiki version v2.1.6, Release Foswiki-2.1.6, Plugin API version 2.4
Ideas, requests, problems regarding CFCL Wiki? Send us email