[poppler] Regarding page search

Albert Astals Cid aacid at kde.org
Mon Mar 15 16:31:11 PDT 2010


A Dilluns, 15 de març de 2010, amit aggarwal va escriure:
> Yes it a problem in floating point comparison in findText algorithm .
> As per my use cases its coming in
> 
>       // check: is the line above the top limit?
>       if (!startAtTop &&
> 	  (backward ? line->yMin > yStart : line->yMin < yStart)) {
> 	continue;
>       }
> line->yMin <yStart but there might be a probability that problem will
> come  in other comparison also like
> 
>     // check: is the block above the top limit?
> 
>     if (!startAtTop && (backward ? blk->yMin > yStart : blk->yMax <
> yStart)) { continue;
>     }
> 
> blk->yMax < yStart  same for bottom limit check also.
> 
> Please  let me know your comment  for the same

Yeah, there is a ugly double<->float conversion hitting you there, Pino and me 
are looking for the fix that makes more sense, give us some days.

Albert

> 
> On Mon, Mar 15, 2010 at 3:52 PM, amit aggarwal <amitcs06 at gmail.com> wrote:
> > Hello Albert,
> > 
> > I have done analysis and found the problem is in floating point
> > comparison..
> > 
> > yStart :226.279999 line->yMin: 226.280000 this is log where yStart is
> > the previous searchHit result  and second new is giving 226.8 Effect
> > of this is making
> > 
> >      if (!startAtTop &&
> >          (backward ? line->yMin > yStart : line->yMin < yStart)) {
> >        continue;
> >      }
> > the above code or condition by-pass in findText TextOutputDev.cc so
> > that its returning the same co-ordinate every-time.
> > 
> > Looking forward for your comments
> > 
> > 
> > Pasting some more logs  may be it will clear the more about the problem
> > 
> > Debug: startSearch**
> > Debug:
> > ***************************searchPageForward***********************
> > 
> > Debug: "PdfPageWidget:: Load time: 0.023000 s."
> > 
> >  coming here constructor TextPage to make haveLastFind zero
> > startAtLast:0 haveLastFind:0 *xMin: 0.000000,*yMin: 0.000000
> > blk->yMax: 82.285000 yStart :0.000000line->yMin: 69.492000blk->yMax:
> > 272.800000 yStart :0.000000line->yMin: 226.280000
> > Making found true xMin1:391.900000 yMin1:226.280000 blk->yMax:
> > 316.570000 yStart :0.000000line->yMin: 290.984000blk->yMax: 334.285000
> > yStart :0.000000line->yMin: 321.492000blk->yMax: 359.685000 yStart
> > 
> > :0.000000line->yMin: 346.892000blk->yMax: 377.685000 yStart
> > :0.000000line->yMin: 364.892000blk->yMax: 425.154000 yStart
> > :0.000000line->yMin: 409.530000blk->yMax: 542.485000 yStart
> > :0.000000line->yMin: 516.892000line->yMin: 529.692000
> > 
> > lastFindXMin: 391.900000 lastFindYMin: 226.280000 haveLastFind: 1
> > *xMin 391.900000 *yMin 226.280000
> > Debug: From Top
> > Debug: **********TopPage: 1 qrect: QRectF(391.9,226.28 85.88x46.52)
> > searchText: "Offic"
> > 
> >  coming to here constructor TextPage to make haveLastFind zero
> > 
> > startAtLast:1 haveLastFind:0 *xMin: 391.899994,*yMin: 226.279999
> > blk->yMax: 82.285000 yStart :226.279999blk->yMax: 272.800000 yStart
> > 
> > :226.279999line->yMin: 226.280000
> > 
> > Making found true xMin1:391.900000 yMin1:226.280000 blk->yMax:
> > 316.570000 yStart :226.279999line->yMin: 290.984000blk->yMax:
> > 334.285000 yStart :226.279999line->yMin: 321.492000blk->yMax:
> > 359.685000 yStart :226.279999line->yMin: 346.892000blk->yMax:
> > 377.685000 yStart :226.279999line->yMin: 364.892000blk->yMax:
> > 425.154000 yStart :226.279999line->yMin: 409.530000blk->yMax:
> > 542.485000 yStart :226.279999line->yMin: 516.892000line->yMin:
> > 529.692000
> > lastFindXMin: 391.900000 lastFindYMin: 226.280000 haveLastFind: 1
> > *xMin 391.900000 *yMin 226.280000
> > Debug: Poppler1 Next sLeft 391.9 sTop 226.28 sRight 477.78 sBottom 272.8
> > Debug: **********Page: 1 qrect: QRectF(391.9,226.28 85.88x46.52)
> > searchText: "Offic"
> > 
> > On Fri, Mar 12, 2010 at 2:21 PM, Albert Astals Cid <aacid at kde.org> wrote:
> >> A Divendres, 12 de març de 2010, amit aggarwal va escriure:
> >>> Hello Albert,
> >>> Thanks for your reply , Please do let me know if I can enable and send
> >>> you log etc. so that you will do analysis, In the meanwhile I am also
> >>> looking into the issue how to fix it ?
> >>> 
> >>> Any knowledge or help if you want to share plz , bcoz that will help
> >>> me to fix this issue quickly.
> >> 
> >> I don't have any suggestion besides "debug the same code in the two
> >> machines at the same time and see why it works in one and not in the
> >> other".
> >> 
> >> Albert
> >> 
> >>> On Fri, Mar 12, 2010 at 1:05 AM, Albert Astals Cid <aacid at kde.org> 
wrote:
> >>> > A Dijous, 11 de març de 2010, amit aggarwal va escriure:
> >>> >> Hello All,
> >>> >> 
> >>> >> As per the analysis , search is always starting form the top and
> >>> >> every-time its getting first hit and returning the same co-ordinate.
> >>> >> 
> >>> >> >>> >     while(mDocument->page(pageindex)->search(
> >>> >> >>> > 
> >>> >> >>> >                searchText,
> >>> >> >>> >                searchHit,
> >>> >> >>> >                Poppler::Page::NextResult,
> >>> >> >>> >                Poppler::Page::CaseInsensitive)) {
> >>> >> 
> >>> >> So my question is how can i make it so that it will move to next hit
> >>> >> or in other-way how can i make so that it will not always start from
> >>> >> top of that page ?
> >>> >> 
> >>> >> Looking forward for your help
> >>> > 
> >>> > If it works on x86 and does not work on ARM it probably means
> >>> > something is overflowing, can't help you since i don't have any ARM
> >>> > gadget to play with.
> >>> > 
> >>> > Sorry,
> >>> >  Albert
> >>> > 
> >>> >> On Thu, Mar 11, 2010 at 7:49 AM, amit aggarwal <amitcs06 at gmail.com>
> >> 
> >> wrote:
> >>> >> > Hello Albert,
> >>> >> > 
> >>> >> > Thanks for your reply , Yes I saw the same observation its
> >>> >> > workiing fine on normal PC but when I using the same in ARM based
> >>> >> > m/c its returning me same co-ordinates eveytiime .Its not moving
> >>> >> > to next hit even though that page have next hit.
> >>> >> > 
> >>> >> > On Thu, Mar 11, 2010 at 4:15 AM, Albert Astals Cid <aacid at kde.org>
> >> 
> >> wrote:
> >>> >> >> A Dimecres, 10 de març de 2010, amit aggarwal va escriure:
> >>> >> >>> Hello,
> >>> >> >>> 
> >>> >> >>> One observation which I noticed is that same page all searchText
> >>> >> >>> below algorithm is working fine on x86 but its returning same
> >>> >> >>> co-ordinate on arm processor.
> >>> >> >>> 
> >>> >> >>> Please help me is there any problem in page search API or I am
> >>> >> >>> not using it in correct way ?
> >>> >> >> 
> >>> >> >> You mean the code works in a regular PC but fails in an arm based
> >>> >> >> machine?
> >>> >> >> 
> >>> >> >> Albert
> >>> >> >> 
> >>> >> >>> On Wed, Mar 10, 2010 at 6:03 PM, amit aggarwal
> >>> >> >>> <amitcs06 at gmail.com>
> >>> > 
> >>> > wrote:
> >>> >> >>> > Hi All,
> >>> >> >>> > 
> >>> >> >>> > I am using page search API in different thread to search the
> >>> >> >>> > word of that particular page. But I am getting one problem
> >>> >> >>> > that its returning same co-ordinate every time even though
> >>> >> >>> > that page is containing more than 2 search hit also.
> >>> >> >>> > So that while loop is never ending. Please help me for the
> >>> >> >>> > same and let me know If I am doing something wrong.
> >>> >> >>> > 
> >>> >> >>> > I am attaching my code snippets and log also.
> >>> >> >>> > 
> >>> >> >>> >     QRectF searchHit;
> >>> >> >>> >     while(mDocument->page(pageindex)->search(
> >>> >> >>> >                searchText,
> >>> >> >>> >                searchHit,
> >>> >> >>> >                Poppler::Page::NextResult,
> >>> >> >>> >                Poppler::Page::CaseInsensitive)) {
> >>> >> >>> > 
> >>> >> >>> > 
> >>> >> >>> > qDebug()<<"**********Page:"<<pageIndex+1<<"qrect:"<<searchHit<
> >>> >> >>> > <"se arc hTex t:"<<searchText;
> >>> >> >>> > (mResults[page]).append(searchHit); }
> >>> >> >>> > 
> >>> >> >>> > Debug: **********Page: 1 qrect: QRectF(391.9,226.28
> >>> >> >>> > 110.48x46.52) searchText: "Office"
> >>> >> >>> > Debug: **********Page: 1 qrect: QRectF(391.9,226.28
> >>> >> >>> > 110.48x46.52) searchText: "Office"
> >>> >> >>> > Debug: **********Page: 1 qrect: QRectF(391.9,226.28
> >>> >> >>> > 110.48x46.52) searchText: "Office"
> >>> >> >>> > Debug: **********Page: 1 qrect: QRectF(391.9,226.28
> >>> >> >>> > 110.48x46.52) searchText: "Office"
> >>> >> >>> > Debug: **********Page: 1 qrect: QRectF(391.9,226.28
> >>> >> >>> > 110.48x46.52) searchText: "Office"
> >>> >> >>> > Debug: **********Page: 1 qrect: QRectF(391.9,226.28
> >>> >> >>> > 110.48x46.52) searchText: "Office"
> >>> >> >>> > Debug: **********Page: 1 qrect: QRectF(391.9,226.28
> >>> >> >>> > 110.48x46.52) searchText: "Office"
> >>> >> >>> > Debug: **********Page: 1 qrect: QRectF(391.9,226.28
> >>> >> >>> > 110.48x46.52) searchText: "Office"
> >>> >> >>> > Debug: **********Page: 1 qrect: QRectF(391.9,226.28
> >>> >> >>> > 110.48x46.52) searchText: "Office"
> >>> >> >>> > 
> >>> >> >>> > 
> >>> >> >>> > 
> >>> >> >>> > --
> >>> >> >>> > Thanks
> >>> >> >>> > Amit Aggarwal
> >>> >> >> 
> >>> >> >> _______________________________________________
> >>> >> >> poppler mailing list
> >>> >> >> poppler at lists.freedesktop.org
> >>> >> >> http://lists.freedesktop.org/mailman/listinfo/poppler
> >>> >> > 
> >>> >> > --
> >>> >> > Thanks
> >>> >> > Amit Aggarwal
> >>> > 
> >>> > _______________________________________________
> >>> > poppler mailing list
> >>> > poppler at lists.freedesktop.org
> >>> > http://lists.freedesktop.org/mailman/listinfo/poppler
> >> 
> >> _______________________________________________
> >> poppler mailing list
> >> poppler at lists.freedesktop.org
> >> http://lists.freedesktop.org/mailman/listinfo/poppler
> > 
> > --
> > Thanks
> > Amit Aggarwal


More information about the poppler mailing list