PDFBox : Extract Text from PDF

Recently I had to extract text from PDF files for indexing the content using Apache Lucene. Apache PDFBox was the obvious choice for the java library to be used.

Apache PDFBox is an opensource java library for working with PDF files. The PDFBox library allows creation of new PDF documents, manipulation of existing documents and the ability to extract content from documents. PDFBox also includes several command line utilities.

There is no latest build available for PDFBox. Sourceforge has very old binaries. But  the old version fails to work with PDF 1.5 specification. So one need to compile the latest code from SVN. 

I am sharing the latest jar file built from svn here

The following example explains how to extract the text from a pdf file using PDFBox.

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import org.apache.pdfbox.cos.COSDocument;
import org.apache.pdfbox.pdfparser.PDFParser;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.util.PDFTextStripper;

public class PDFTextParser {

	// Extract text from PDF Document
	static String pdftoText(String fileName) {
		PDFParser parser;
		String parsedText = null;;
		PDFTextStripper pdfStripper = null;
		PDDocument pdDoc = null;
		COSDocument cosDoc = null;
		File file = new File(fileName);
		if (!file.isFile()) {
			System.err.println("File " + fileName + " does not exist.");
			return null;
		}
		try {
			parser = new PDFParser(new FileInputStream(file));
		} catch (IOException e) {
			System.err.println("Unable to open PDF Parser. " + e.getMessage());
			return null;
		}
		try {
			parser.parse();
			cosDoc = parser.getDocument();
			pdfStripper = new PDFTextStripper();
			pdDoc = new PDDocument(cosDoc);
			pdfStripper.setStartPage(1);
			pdfStripper.setEndPage(5);
			parsedText = pdfStripper.getText(pdDoc);
		} catch (Exception e) {
			System.err
					.println("An exception occured in parsing the PDF Document."
							+ e.getMessage());
		} finally {
			try {
				if (cosDoc != null)
					cosDoc.close();
				if (pdDoc != null)
					pdDoc.close();
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
		return parsedText;
	}
	public static void main(String args[]){
		System.out.println(pdftoText("/home/santhosh/pdfbox/test.pdf"));
	}

}

 

More details on the APIs can be read from here

Youtube to MPEG or Ogg video conversion

Here is the two line method to convert a youtube video to oggvorbis video.
Locate clive and ffmpeg2theora in your package and install
$clive http://in.youtube.com/watch?v=6JeZ5oeAEyU (replace this with the youtube address you want)
It will create a flv file.
Convert to mpeg video file
$ffmpeg -i AmericaAmerica.flv AmericaAmerica.mpg
Convert to ogg video file
$ffmpeg2theora AmericaAmerica.mpg (replace it with the name of the flv file the previous command created)
Done. You can see the .ogg file in the directory from where you executed the above commands

ധ്വനി-കെ.ഡി.ഇ സംയോജനം

KDE ഡെസ്ക്ടോപ്പില്‍ ധ്വനി ടെക്സ്റ്റ് ടു സ്പീച്ച് സിസ്റ്റം ചേര്‍ത്തു് kedit, kate, kwrite, konqueror എന്നിവയിലുള്ള മലയാളം(ധ്വനി പിന്തുണയ്ക്കുന്ന മറ്റു ഭാഷകളും) വായിക്കാം. കോണ്‍ക്വറര്‍ വെബ് ബ്രൌസറിലും മലയാളം വെബ് പേജുകള്‍ വായിക്കാന്‍ ധ്വനി ഉപയോഗിക്കാം. ഇതിനായി ഞാന്‍ പ്രത്യേകം കോഡൊന്നും എഴുതിയിട്ടില്ല. :). ktts(KDE യുടെ TTS system) കമാന്റ് പ്ലഗിന്‍ എന്ന ഒരു സൌകര്യം ഉപയോഗിച്ചാണു് ഇതു ചെയ്യാന്‍ കഴിയുന്നതു്.
Kontrol center ല്‍ പോയി Regional and Accessibility എന്ന വിഭാഗത്തിലെ Text-to-speech എടുക്കുക. അവിടെ Talkers tab ല്‍ Add എന്ന ബട്ടണ്‍ ക്ലിക്ക് ചെയ്യുക. Synthesizer എന്നതിന്റെ Show All തിരഞ്ഞെടുത്ത് Command എന്നെടുക്കുക. Language എന്നതു് Other എന്നും. ഇപ്പോള്‍ നിങ്ങള്‍ക്ക് സിന്തസൈസറിന്റെ കമാന്റ് ചേര്‍ക്കാനുള്ള ഒരു ജാലകം കിട്ടും. അവിടെ
dhvani %f

എന്നു ചേര്‍ക്കുക. ഈ Talker നെ ഡിഫോള്‍ട്ട് ആക്കുക. തീര്‍ന്നു. മുമ്പ് പറഞ്ഞ അപ്ലിക്കേനുകളിലെല്ലാം വായിക്കേണ്ട ഭാഗം സെലക്ട് ചെയ്തു് ടൂള്‍സ് മെനുവില്‍ നിന്നു് Speak text എടുക്കുക.
For for information about dhvani, how to install etc see the documentation

കൃഷ്ണകാന്ത് മനേ എന്ന അന്ധപ്രോഗ്രാമ്മര്‍

അന്ധനായ ഒരാള്‍ക്കു് ഒരു പ്രോഗ്രാമ്മറാവാമോ? കൃഷ്ണകാന്ത് മനേ ഒരു അന്ധ പ്രോഗ്രാമ്മറാണു്. മുംബൈയിലെ ടാറ്റാ ഇന്‍സ്റ്റിട്യൂട്ട് ഓഫ് ഫണ്ടമെന്റല്‍ റിസര്‍ച്ച് സെന്ററിലെ ഗവേഷകനുമാണു്. കൂടാതെ സ്വതന്ത്ര സോഫ്റ്റ്‌വെയര്‍ പ്രചാരകനും, അന്ധരായ വിദ്യാര്‍ത്ഥികളെ പരിശീലിപ്പിക്കുന്ന വിദഗ്ദ്ധനും, പല സംസ്ഥാന സര്‍ക്കാറുകളുടെയും അന്ധര്‍ക്കായുള്ള വിദ്യാഭ്യാസ പദ്ധതികളുടെ ഉപദേശകനുമാണു്.
കുറച്ചുമാസങ്ങള്‍ക്കു് മുന്‍പ്, ബാംഗ്ലൂരില്‍ വച്ചാണു് ഞാന്‍ മനേയെ പരിചയപ്പെടുന്നതു്. തന്റെ IBM thinkpad ലാപ്‌ടോപ്പില്‍ ഉബുണ്ടു ഗ്നു/ലിനക്സും ഓര്‍ക്ക(Orca) എന്ന സ്ക്രീന്‍ റീഡര്‍ സോഫ്റ്റ്‌വെയറും ഉപയോഗിച്ചു് അദ്ദേഹം നെറ്റ് ബ്രൗസ് ചെയ്യുന്നതും, മെയില്‍ നോക്കുന്നതും, പ്രോഗ്രാം ചെയ്യുന്നതും കണ്ടു് ഞാന്‍ അത്ഭുതപ്പെടുപോയി. കാഴ്ചയുള്ള ആരും ചെയ്യുന്ന അതേ ലാളിത്യത്തോടുകൂടിത്തന്നെ അദ്ദേഹം അതെല്ലാം ചെയ്യുന്നു. Orca ഒരു സ്വതന്ത്ര സ്ക്രീന്‍ റീഡര്‍ സോഫ്റ്റ്‌വെയറാണു്. അതു് സ്ക്രീനിലെ വാചകങ്ങളെ ശബ്ദമാക്കിത്തരുന്നു. ഇംഗ്ലീഷിലാണു് അദ്ദേഹം അതുപയോഗിച്ചിരുന്നതു്. ഫെസ്റ്റിവല്‍ എന്ന ടെക്സ്റ്റ് ടു സ്പീച്ച് സോഫ്റ്റ്‌വെയറിന്റെ സഹായത്തോടെ.
അദ്ദേഹത്തെപ്പറ്റിയും തമിഴ്‌നാട് സര്‍ക്കാറിന്റെ ഓര്‍ക്കയും ഉബുണ്ടുവും ഉപയോഗിച്ചുള്ള അന്ധവിദ്യാര്‍ത്ഥികള്‍ക്കായുള്ള പരിപാടിയെക്കുറിച്ചുമുള്ള ഒരു വീഡിയോ താഴെക്കൊടുത്തിരിക്കുന്നു.

ഇംഗ്ലീഷിനുപകരം മലയാളത്തിലോ തമിഴിലോ ഉള്ള ടെക്സ്റ്റ് ടു സ്പീച്ച് സോഫ്റ്റ്‌വെയറുകള്‍ ഉപയോഗിക്കുകയാണെങ്കില്‍ അതു കൂടുതല്‍ ഉപയോഗപ്രദമായിരിക്കും.ഇതിനുള്ള ഒരു തടസ്സം ഭാരതീയ ഭാഷകള്‍ക്കു് ഉപയോഗിക്കാവുന്ന ടെക്സ്റ്റ് ടു സ്പീച്ച് സോഫ്റ്റ്‌വെയറുകളുടെ അഭാവമാണു്. ഇതിനുള്ള ഒരു പരിഹാരമാണു്, ഞാനും ഇന്ത്യന്‍ ഇന്‍സ്റ്റിട്യൂട്ട് ഓഫ് സയന്‍സ് ബാംഗ്ലൂരിലെ പ്രൊഫസറായ ഡോ: രമേഷ് ഹരിഹരനും കൂടി വികസിപ്പിച്ചു കൊണ്ടിരിക്കുന്ന ധ്വനി എന്ന സോഫ്റ്റ്‌വെയര്‍. മലയാളമടക്കം 8 ഭാഷകള്‍ ധ്വനിക്കു് സംസാരിയ്ക്കാന്‍ കഴിയും.

ധ്വനി ഇക്കൊല്ലത്തെ ഫോസ് ഇന്ത്യ അവാര്‍ഡിനു് അര്‍ഹമായ പ്രൊജക്റ്റാണു്. NRCFOSS(National Resouce Center for Free and Open Source Software) സ്പോണ്‍സര്‍ചെയ്യുന്ന 25000 രൂപയാണു് അവാര്‍ഡ് തുക. (സ്വതന്ത്രമലയാളം കമ്പ്യൂട്ടിങ്ങിന്റെ വേറൊരു പ്രൊജക്റ്റായ ടക്സ് ടൈപ്പിനും അവാര്‍ഡുണ്ടു്. തൃശൂര്‍ എഞ്ചിനീയറിങ്ങ് കോളേജിലെ മോബിന്‍ , ശ്രീരഞ്ജ് , ശ്രേയസ്, പ്രിന്‍സ്, വിമല്‍ എന്നീ വിദ്യാര്‍ത്ഥികള്‍ക്കാണു് അവാര്‍ഡ് ലഭിച്ചതു്.)
ധ്വനി ഉപയോഗിച്ചു് എങ്ങനെ മലയാളം ടെക്സ്റ്റുകളെ mp3/ogg ആക്കി മാറ്റാമെന്നറിയാന്‍ ഈ ബ്ലോഗ് പോസ്റ്റ് വായിക്കുക.

വേഗനിയന്ത്രണത്തിനായി പുതിയൊരു മാര്‍ഗ്ഗം!

കേരളത്തിലെ റോഡുകളില്‍ നിന്നു് പ്രചോദനമുള്‍ക്കൊണ്ടു് വാഹനങ്ങളുടെ വേഗനിയന്ത്രണത്തിനായി പുതിയൊരു മാര്‍ഗ്ഗം! താഴെക്കൊടുത്തിരിക്കുന്ന ചിത്രങ്ങളൊന്നു നോക്കൂ!!!



ചിത്രങ്ങള്‍ക്ക് കടപ്പാട്: http://tides.ws/2008/01/20/new-speed-controlling-device/

കെ.ഡി.ഇ. 4.0 പുറത്തിറങ്ങി

കെഡിഇ സംരംഭം അതിനൂതനമായ സ്വതന്ത്ര സോഫ്റ്റുവെയര്‍ പണിയിടത്തിന്റെ നാലാമത്തെ പ്രധാന പതിപ്പു് പുറത്തിറക്കുന്നു.

“നിത്യോപയോഗത്തിനും പ്രത്യേകാവശ്യത്തിനുമൊരുപോലെ ഉപയോഗിയ്ക്കാവുന്ന വളരെയധികം പ്രയോഗങ്ങളുള്‍പ്പെടുന്ന ഒരു പുത്തനാശയമുള്‍ക്കൊള്ളുന്ന സ്വതന്ത്ര സോഫ്റ്റുവെയര്‍ പണിയിടമാണു് കെഡിഇ 4.0. പണിയിടവുമായും പ്രയോഗങ്ങളുമായും ഇടപഴകാനായി വളരെ എളുപ്പത്തില്‍ മനസ്സിലാകുന്ന വിനിമയതലം നല്‍കുന്ന കെഡിഇ 4 നു് വേണ്ടി വികസിപ്പിച്ച പണിയിടത്തിന്റെ ആവരണമാണു് പ്ലാസ്മ. കൊണ്‍ക്വറര്‍ വെബ് ബ്രൈസര്‍ പണിയിടത്തെ വെബുമായി ഏകീകരിയ്ക്കുന്നു. ഡോള്‍ഫിനെന്ന ഫയലുകളുടെ നടത്തിപ്പുകാരന്‍, ഒക്യുലാര്‍ എന്ന രചനകളുടെ നിരീക്ഷകന്‍ പിന്നെ സിസ്റ്റം സജ്ജീകരണങ്ങള്‍ എന്ന നിയന്ത്രണ കേന്ദ്രം അടിസ്ഥാനമായ പണിയിട ഗണം പൂര്‍ത്തിയാക്കുന്നു.
നൂതന ദൃശ്യങ്ങള്‍ക്കുള്ള കഴിവു് നല്‍കുന്ന ക്യൂട്ടി4ഉം ശൃംഖലയിലെ വിഭവങ്ങള്‍ എളുപ്പത്തില്‍ ലഭ്യമാക്കുന്ന കെഐഒ തുടങ്ങിയ ഉള്‍ക്കൊള്ളുന്ന കെഡിഇ ലൈബ്രറികളുപയോഗിച്ചാണു് കെഡിഇ തയ്യാറാക്കിയിരിയ്ക്കുന്നതു്. കെഡിഇ ലൈബ്രറികളുടെ ഭാഗമായ ഫോനോണ്‍ സോളിഡ് എന്നിവ എല്ലാ കെഡിഇ പ്രയോഗങ്ങള്‍ക്കും മള്‍ട്ടിമീഡിയ ചട്ടക്കൂടും കൂടുതല്‍ മെച്ചപ്പെട്ട ഹാര്‍ഡുവെയര്‍ ഏകീകരണവും നല്‍കുന്നു.”

മലയാളത്തിലുള്ള പ്രകാശനക്കുറിപ്പു് ഇവിടെ

സോഫ്റ്റ്‌വെയര്‍ ചരിത്രത്തിലാദ്യമായി ഒരു സോഫ്റ്റ്‌വെയറിന്റെ പ്രകാശനക്കുറിപ്പു് മലയാളത്തിലിറങ്ങുന്നു എന്നൊരു പ്രത്യേകത കൂടി ഇതിനുണ്ടു്.

സ്വതന്ത്ര മലയാളം കമ്പ്യൂട്ടിങ്ങിലെ കെ.ഡി.ഇ മലയാളം സ്ക്വാഡ് അംഗങ്ങളായ പ്രവീണും ആഷിക് സലാഹുദ്ദീനും ചേര്‍ന്നാണു് മലയാളത്തിലെ പ്രകാശനക്കുറിപ്പു് തയ്യാറാക്കിയതു്.
മലയാളത്തോടൊപ്പം ഹിന്ദി, ബംഗാളി , ഗുജറാത്തി, മറാത്തി , പഞ്ചാബി എന്നീ ഭാഷകളിലും ഈ പ്രകാശനക്കുറിപ്പു് ലഭ്യമാണു്.