I have to index a list of PDFs and for some of them there is no problem, but 
for others when I look the indexed content I only see a lot of diamonds with a 
question mark in it.

I think the problem is the font used for the document or that the content is 
"encapsulated" into a picture.

Is there a way to tell tika to extract only the "readable/parsable" text of a 
pdf?

When I query all the documents (with my java application) this is an ex. of 
what I see in the logfile for the content of the problematic files:

    DEBUG org.apache.http.wire -  << " [\n]">
    DEBUG org.apache.http.wire -  << "  
[0xe8]?[0x1]d41d8cd98f00b204e9800998ecf8427e[0xb][0xa4][0xe5][0x81](Diverses[0xe6]=aabhpdtyan3vfsujquccemebqr4m3[0xe7][0x81]?[0xc1][0x4]
 [\n]">
    DEBUG org.apache.http.wire -  << " [\n]">
    DEBUG org.apache.http.wire -  << "  [\n]">
    DEBUG org.apache.http.wire -  << "  [\n]">
    DEBUG org.apache.http.wire -  << "  [\n]">
    DEBUG org.apache.http.wire -  << "  [\n]">
    DEBUG org.apache.http.wire -  << "  [\n]">
    DEBUG org.apache.http.wire -  << "  [\n]">
    DEBUG org.apache.http.wire -  << "  [\n]">
    DEBUG org.apache.http.wire -  << "  [\n]">
    DEBUG org.apache.http.wire -  << "  [\n]">
    DEBUG org.apache.http.wire -  << "  [\n]">
    DEBUG org.apache.http.wire -  << "  [\n]">
    DEBUG org.apache.http.wire -  << "  [\n]">
    DEBUG org.apache.http.wire -  << "  [\n]">
    DEBUG org.apache.http.wire -  << "  [\n]">
    DEBUG org.apache.http.wire -  << "  [\n]">
    DEBUG org.apache.http.wire -  << "  [\n]">
    DEBUG org.apache.http.wire -  << "  [\n]">
    DEBUG org.apache.http.wire -  << "  [\n]">
    DEBUG org.apache.http.wire -  << "  [\n]">
    DEBUG org.apache.http.wire -  << "  [\n]">
    DEBUG org.apache.http.wire -  << "  [\n]">
    DEBUG org.apache.http.wire -  << "  [\n]">
    DEBUG org.apache.http.wire -  << "  [\n]">
    DEBUG org.apache.http.wire -  << "  [\n]">
    DEBUG org.apache.http.wire -  << "  [\n]">
    DEBUG org.apache.http.wire -  << "  [\n]">
    DEBUG org.apache.http.wire -  << " E-Mail zur Archivierung [\n]">
    DEBUG org.apache.http.wire -  << " [\n]">
    DEBUG org.apache.http.wire -  << "    [\n]">
    DEBUG org.apache.http.wire -  << " 
[0xef][0xbf][0xbd][0xef][0xbf][0xbd][0xef][0xbf][0xbd][0xef][0xbf][0xbd][0xef][0xbf][0xbd][0xef][0xbf][0xbd][0xef][0xbf][0xbd][0xef][0xbf][0xbd][0xef][0xbf][0xbd][0xef][0xbf][0xbd][0xef][0xbf][0xbd][0xef][0xbf][0xbd][0xef][0xbf][0xbd][0x9][0xef][0xbf][0xbd][\n]">
    DEBUG org.apache.http.wire -  << 
"[0xef][0xbf][0xbd][0xef][0xbf][0xbd][0x9][0xef][0xbf][0xbd][0xef][0xbf][0xbd][0xef][0xbf][0xbd][0xef][0xbf][0xbd][0xef][0xbf][0xbd][\r][0xef][0xbf][0xbd][0xef][0xbf][0xbd][0xef][0xbf][0xbd][\r][\n]">
    DEBUG org.apache.http.wire -  << " [\n]">
    DEBUG org.apache.http.wire -  << " 
[0xef][0xbf][0xbd][0xef][0xbf][0xbd][0xef][0xbf][0xbd][\n]">
    DEBUG org.apache.http.wire -  << " [\n]">
    DEBUG org.apache.http.wire -  << " 
[0xef][0xbf][0xbd][0xef][0xbf][0xbd][0xef][0xbf][0xbd][0xef][0xbf][0xbd][\n]">
    DEBUG org.apache.http.wire -  << 
"[0xef][0xbf][0xbd][0xef][0xbf][0xbd][0xef][0xbf][0xbd][0xef][0xbf][0xbd][0xef][0xbf][0xbd][0xef][0xbf][0xbd][0xef][0xbf][0xbd][0xef][0xbf][0xbd][0xef][0xbf][0xbd][\n]">
    DEBUG org.apache.http.wire -  << " [\n]">
    DEBUG org.apache.http.wire -  << " 
[0xef][0xbf][0xbd][0xef][0xbf][0xbd][0xef][0xbf][0xbd][0x9][0xef][0xbf][0xbd][0xef][0xbf][0xbd][0xef][0xbf][0xbd][0xef][0xbf][0xbd][\n]">
    DEBUG org.apache.http.wire -  << " [\n]">
    DEBUG org.apache.http.wire -  << " 
[0xef][0xbf][0xbd][0xef][0xbf][0xbd][0xef][0xbf][0xbd][0xef][0xbf][0xbd][0xef][0xbf][0xbd][0xef][0xbf][0xbd][0xef][0xbf][0xbd][0xef][0xbf][0xbd][0xef][0xbf][0xbd][0xef][0xbf][0xbd][0x9][0xef][0xbf][0xbd][0xef][0xbf][0xbd][0xef][0xbf][0xbd][0xef][0xbf][0xbd][0xef][0xbf][0xbd][\n]">
    DEBUG org.apache.http.wire -  << 
"[0xef][0xbf][0xbd][0xef][0xbf][0xbd][0xef][0xbf][0xbd][0xef][0xbf][0xbd][0xef][0xbf][0xbd][0xef][0xbf][0xbd][0xef][0xbf][0xbd][0xef][0xbf][0xbd][0xef][0xbf][0xbd][0xef][0xbf][0xbd][0xef][0xbf][0xbd][\r][0xef][0xbf][0xbd][0xef][0xbf][0xbd][0xef][0xbf][0xbd][\r][\n]">
    DEBUG org.apache.http.wire -  << 
"[0xef][0xbf][0xbd][0xef][0xbf][0xbd][0xef][0xbf][0xbd][0xef][0xbf][0xbd][0xef][0xbf][0xbd][0xef][0xbf][0xbd][0xef][0xbf][0xbd][0xef][0xbf][0xbd][0xef][0xbf][0xbd][0xef][0xbf][0xbd][0xef][0xbf][0xbd][0xef][0xbf][0xbd][0xef][0xbf][0xbd][0xef][0xbf][0xbd][0xef][0xbf][0xbd][0xef][0xbf][0xbd][\n]">
    DEBUG org.apache.http.wire -  << 
"[0xef][0xbf][0xbd][0xef][0xbf][0xbd][0xef][0xbf][0xbd][0xef][0xbf][0xbd][0xef][0xbf][0xbd][0xef][0xbf][0xbd][0xef][0xbf][0xbd][0xef][0xbf][0xbd][0xef][0xbf][0xbd][0xef][0xbf][0xbd][0xef][0xbf][0xbd][0xef][0xbf][0xbd][\n]">
    DEBUG org.apache.http.wire -  << 
"[0xef][0xbf][0xbd][0xef][0xbf][0xbd][0xef][0xbf][0xbd][0xef][0xbf][0xbd][0xef][0xbf][0xbd][0xef][0xbf][0xbd][0xef][0xbf][0xbd][0xef][0xbf][0xbd][0xef][0xbf][0xbd][0xef][0xbf][0xbd][0xef][0xbf][0xbd][\r][0xef][0xbf][0xbd][0xef][0xbf][0xbd][0xef][0xbf][0xbd][\r][\n]">
    DEBUG org.apache.http.wire -  << 
"[0xef][0xbf][0xbd][0xef][0xbf][0xbd][0xef][0xbf][0xbd][0xef][0xbf][0xbd][0xef][0xbf][0xbd][0xef][0xbf][0xbd][0xef][0xbf][0xbd][0xef][0xbf][0xbd][0xef][0xbf][0xbd][0xef][0xbf][0xbd][0xef][0xbf][0xbd][0xef][0xbf][0xbd][\n]">
    DEBUG org.apache.http.wire -  << " [\n]">
    DEBUG org.apache.http.wire -  << " 
[0xef][0xbf][0xbd][0xef][0xbf][0xbd][0xef][0xbf][0xbd][0xef][0xbf][0xbd][0xef][0xbf][0xbd][0xef][0xbf][0xbd][0xef][0xbf][0xbd][0xef][0xbf][0xbd][0xef][0xbf][0xbd][0xef][0xbf][0xbd][0xef][0xbf][0xbd][\n]">
    DEBUG org.apache.http.wire -  << " [\n]">
    DEBUG org.apache.http.wire -  << " [0xef][0xbf][0xbd] [\n]">
    DEBUG org.apache.http.wire -  << "  [\n]">
    DEBUG org.apache.http.wire -  << " [\n]">
    DEBUG org.apache.http.wire -  << " [0x9] data1.pdf [\n]">



Another problem is that for all the files (also the "good ones") at the 
beginning of the content field there is a long list of `\n` as you can also see 
above. How can avoid this?


Here is my schema.xml:

    <?xml version="1.0" encoding="UTF-8" ?>
    <schema name="simple" version="1.1">
                <types>
                               <fieldtype name="string" class="solr.StrField" 
postingsFormat="SimpleText" />
                               <fieldtype name="ignored" class="solr.TextField" 
/>
                                <fieldtype name="text" class="solr.TextField" 
postingsFormat="SimpleText">
                                               <analyzer>
                                                               <charFilter 
class="solr.PatternReplaceCharFilterFactory" pattern="\n" replacement=""/>
                                                               <tokenizer 
class="solr.StandardTokenizerFactory"/>
                                                               <filter 
class="solr.LowerCaseFilterFactory" /> <!--Lowercases the letters in each 
token. Leaves non-letter tokens alone.-->
                                                               <filter 
class="solr.ClassicFilterFactory" /> <!--Removes dots from acronyms and 's from 
the end of tokens. Works only on typed tokens produced by ClassicTokenizer or 
equivalent.-->
                                                               <filter 
class="solr.TrimFilterFactory"/> <!--Trims whitespace at either end of a token. 
-->
                                                               <filter 
class="solr.StopFilterFactory" ignoreCase="true"/> <!--Discards common words.  
-->
                                                               <filter 
class="solr.RemoveDuplicatesTokenFilterFactory"/>
                                               </analyzer>
                               </fieldtype>
                </types>

                <fields>
                               <field name="signatureField" type="string" 
indexed="true" stored="true" multiValued="false" />
                               <dynamicField name="ignored_*" type="ignored" 
multiValued="true" indexed="false" stored="false" />
                               <field name="id" type="string" indexed="true" 
stored="true" multiValued="false" />
                               <field name="rmDocumentTitle" type="string" 
indexed="true" stored="true" multiValued="true"/>
                               <field name="fullText" indexed="true" 
type="text" multiValued="true" />
                </fields>

                <defaultSearchField>fullText</defaultSearchField>

                <solrQueryParser defaultOperator="OR" />
                <uniqueKey>id</uniqueKey>
    </schema>

and my solrconfig.xml:

    <?xml version="1.0" encoding="UTF-8" ?>
    <config>
                <luceneMatchVersion>LUCENE_45</luceneMatchVersion>
                <directoryFactory name='DirectoryFactory' 
class='solr.MMapDirectoryFactory' />

                <codecFactory name="CodecFactory" 
class="solr.SchemaCodecFactory" />

                <lib dir='${solr.core.instanceDir}\lib' />
                <lib dir="${solr.core.instanceDir}\dist\" 
regex="solr-cell-\d.*\.jar" />
                <lib dir="${solr.core.instanceDir}\contrib\extraction\lib" 
regex=".*\.jar" />

                <requestHandler name="standard" 
class="solr.StandardRequestHandler" default="true" />

                <requestHandler name="/update" 
class="solr.UpdateRequestHandler">
                               <lst name="defaults">
                                               <str 
name="update.chain">deduplication</str>
                               </lst>
                </requestHandler>

                <requestHandler name="/update/extract" 
class="solr.extraction.ExtractingRequestHandler">
                               <lst name="defaults">
                                               <str 
name="captureAttr">true</str>
                                               <str 
name="lowernames">false</str>
                                               <str name="overwrite">false</str>
                                               <str 
name="captureAttr">true</str>
                                               <str 
name="literalsOverride">true</str>
                                               <str 
name="uprefix">ignored_</str>
                                               <str name="fmap.a">link</str>
                                               <str 
name="fmap.content">fullText</str>
                                               <!-- the configuration here 
could be useful for tests -->
                                               <str 
name="update.chain">deduplication</str>
                               </lst>
                </requestHandler>

                <updateRequestProcessorChain name="deduplication">
                               <processor
                                               
class="org.apache.solr.update.processor.SignatureUpdateProcessorFactory">
                                               <bool 
name="overwriteDupes">false</bool>
                                               <str 
name="signatureField">signatureField</str>
                                               <bool name="enabled">true</bool>
                                               <str name="fields">content</str>
                                               <str name="minTokenLen">10</str>
                                               <str name="quantRate">.2</str>
                                               <str 
name="signatureClass">solr.update.processor.TextProfileSignature</str>
                               </processor>
                               <processor 
class="solr.LogUpdateProcessorFactory" />
                               <processor 
class="solr.RunUpdateProcessorFactory" />
                </updateRequestProcessorChain>

                <requestHandler name="/admin/"
                               
class="org.apache.solr.handler.admin.AdminHandlers" />

                <lockType>none</lockType>

                <admin>
                               <defaultQuery>*:*</defaultQuery>
                </admin>

    </config>

Reply via email to