日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 前端技术 > HTML >内容正文

HTML

前端工程师 后段工程师_工程师如何在会计中生存

發(fā)布時(shí)間:2023/12/14 HTML 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 前端工程师 后段工程师_工程师如何在会计中生存 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

前端工程師 后段工程師

經(jīng)營自己的“樂趣”之一就是處理會(huì)計(jì)。

現(xiàn)在,為了生存,我嘗試了一些類似的操作:

  • 為我的客戶生成發(fā)票
  • 處理銀行對帳單

一件無聊的事情是整理我必須支付的收據(jù)和發(fā)票:差旅費(fèi),書本費(fèi),會(huì)議費(fèi)等。您明白了。

為什么我需要使用軟件在PDF文件中查找日期

理想情況下,我希望有一個(gè)工具可以將收據(jù)與銀行對賬單中的行進(jìn)行匹配,并生成一些報(bào)告,這些報(bào)告可能會(huì)使我的業(yè)務(wù)顧問感到非常高興。

這樣做的第一步是擁有一個(gè)工具,該工具可以使一堆PDF可以將日期與它們關(guān)聯(lián)。 一旦獲得日期,我便知道要考慮的銀行對賬單的哪幾行,并且可以進(jìn)行匹配(也許還要考慮金額)。

第一步:從PDF中提取文本

有兩種可能的情況:PDF已經(jīng)包含文本,或者PDF是簡單的圖像,我們需要使用OCR技術(shù)識(shí)別文本。

在第一種情況下,事情相對容易。 我們使用PDFBox提取文本:

fun getTextInPdf(fileName: String): List<PieceOfText> {val reader = PdfReader(FileInputStream(File(fileName)))val n = reader.numberOfPagesvar i = 0val listener = MyTextRenderListener()val processor = PdfContentStreamProcessor(listener)while (i<n) {val page = reader.getPageN(i + 1)val resourcesDic = page.getAsDict(PdfName.RESOURCES)processor.processContent(ContentByteUtils.getContentBytesForPage(reader, i + 1), resourcesDic)i++}reader.close()return listener.process() }

但是,當(dāng)然,現(xiàn)實(shí)生活總是會(huì)帶來驚喜。 有些PDF每段包含一個(gè)塊(太棒了!),而另一些PDF 每個(gè)字母則包含一個(gè)塊。 ? 這意味著我們必須查看每個(gè)字母的位置,看看它是否與另一個(gè)字母相鄰。 在這種情況下,我們需要將它們合并以獲得單詞。

如果PDF中沒有文本,則需要采用OCR技術(shù)。 我使用過用C ++編寫的tesseract 。 為了在JVM中使用它,我使用了javacpp-presets 。

一旦獲得了文本塊,就需要將其分成單詞序列。 這部分相對容易,但并不像預(yù)期的那么瑣碎,因?yàn)槲覀冃枰櫭總€(gè)單詞的確切位置。 因此,在單詞中分割一個(gè)塊時(shí),需要進(jìn)行一些數(shù)學(xué)運(yùn)算才能找到每個(gè)單詞的邊界。

第二步:識(shí)別日期

我們現(xiàn)在有很多話。 我們需要查看它們并找到與日期相對應(yīng)的單詞序列。

現(xiàn)在,日期可能以各種奇怪的格式出現(xiàn)。 還請考慮我有英文(英國和美國),法語,德語和意大利語的收據(jù)。

讓我們看一些例子。

首先是經(jīng)典的DD / MM / YY:

  • 15/04/2016
  • 18-06-2016
  • 2016年1月1日

有時(shí)您可以找到Y(jié)Y / MM / DD來代替:

  • 2016-05-13

該月份可以用任何語言的字母表示:

  • 2016年5月7日
  • 2016年6月18日
  • 2016年4月22日
  • 2016年6月1日
  • 2016年4月12日

也可以縮寫為:

  • 2016年4月14日
  • 2016年4月12日

當(dāng)然,有些日期無法確定,因?yàn)槊绹嗽谀硞€(gè)時(shí)候認(rèn)為將日期的月份和日期倒置是個(gè)好主意。 因此,如果我讀2/3/2016,則可能是3月2日或2月3日。 這意味著某些日期是不明確的。

第三步:確定哪個(gè)日期是訂單的日期

現(xiàn)在,發(fā)票可以包含許多不同的日期。 考慮以下示例:

一個(gè)日期的順序(在法國COMMANDE)的聲音,另一種是公司的登記日期。 這絕對是我們不感興趣的日期。

還有其他示例:

或再次:

我們?nèi)绾翁幚磉@種情況?

好吧,我們使用了一系列啟發(fā)式方法,這些方法在大多數(shù)情況下似乎都有效。 最有力的方法之一是在日期附近尋找有意義的單詞,例如, 制造/發(fā)票/ fattura或命令/ 突擊隊(duì)/領(lǐng)隊(duì)。 我們還可以使用字體大小和日期在頁面上的位置。

這些技巧總是奏效嗎? 沒有。

他們經(jīng)常工作嗎? 是的,他們有。

結(jié)論

首先,讓我與大家分享我對美國人選擇的日期格式的熱烈贊賞。 我覺得這是個(gè)好主意,一點(diǎn)也不愚蠢和不幸。 實(shí)際上,這是造成痛苦的主要原因,也是造成錯(cuò)誤的首要原因。

我的大部分收據(jù)都是電子格式,其中包含文字。 在少數(shù)需要使用OCR的情況下,它似乎工作得足夠好。

最后,我對這個(gè)原型非常滿意,因?yàn)榻?jīng)過一些調(diào)整后,它似乎可以在90%的時(shí)間內(nèi)正確猜出。 不錯(cuò),真不錯(cuò)。

哦,嗯,??我想我得回到我的會(huì)計(jì)了。

您是否想自動(dòng)化一些事情以簡化生活?

翻譯自: https://www.javacodegeeks.com/2016/09/engineer-supposed-survive-accounting.html

前端工程師 后段工程師

總結(jié)

以上是生活随笔為你收集整理的前端工程师 后段工程师_工程师如何在会计中生存的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。