掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

查看: 28131|回复: 45

[索引] 词库制作中可能有用的软件、技术整理[201710919]

  [复制链接]

该用户从未签到

发表于 2013-8-25 10:34:14 | 显示全部楼层 |阅读模式
本帖最后由 Oeasy 于 2017-9-19 15:42 编辑
" p0 J& n/ _3 M
; t6 `: L5 r6 V! I; f2 ~3 I3 Z- t; t& f( [* N- H- F
FAQ
1 f/ l0 a* E3 C# {4 f4 V>>  未加密的 mdx 如何转为txt?
( }: K" c& O; C  ]# _6 H4 {工具①,GetDict.exe by yhssdl。下载地址:
/ o) d, K4 k5 Y$ U+ [+ Qhttp://pan.baidu.com/share/link? ... 67&uk=305151372
4 t: u9 Y6 j$ y" e4 k
* v* M4 h& ]' R' p4 b1 ~>>
1 P3 a8 c* N4 D* c( g[实例][解压mdx/mdd再打包为mdx/mdd][乱][多图]  https://www.pdawiki.com/forum/fo ... hread&tid=13388. _7 B+ s6 Z& g  Z
6 L7 m+ S+ E7 T* X$ t( Z

8 N8 w) J- M+ _$ D, i9 O老马的原创空间 http://www.cnblogs.com/stronghorse/+ H. l2 p9 l) h" {

9 n( P2 P2 z, l* q
' k. r# f( p/ b6 i" Pbgl-> txt https://www.pdawiki.com/forum/fo ... &fromuid=147948% ]- }1 ~* A7 `/ ~/ ^& R) \
" c$ a4 ~9 o; c# H

0 D' A! y# ^) p% G3 J# X, v1 y  F
$ r4 [8 D1 ~% M" G: k
% n4 ~; |- H  a
3 C; I7 y3 R: |* S. Y% j
整理中,欢迎补充
4 ]' s9 C+ O2 Xmdx制作非常简单,但是要获取源文件,或把词典做得很漂亮有的时候是需要下一番功夫的。
$ [' d2 v% P3 h1 g正则表达式Regular Expression, html, xml, div+css, + t( B# C" i4 c1 u" t, Q
编码,尤其是汉字编码的一些知识,神马UTF, GBK, unicode。。。{:10_300:}
. h3 S; j7 P/ U0 q* T$ d程序设计语言:
* e  F) b& a8 Y0 P: z5 SPython;C++;
3 A2 o9 h+ k8 q6 |% H  v! ]; BPerl
0 ~* I9 n- B; {" G4 ^* F2 ~JavaScript : http://www.w3school.com.cn/js/jsref_decodeURIComponent.asp
9 j2 F, ^0 r2 b3 U1 m' U' aVBS/VBA: o4 S  C' P  h& W4 N1 S7 m- f
http://www31.ocn.ne.jp/~h_ishida/scripts.html5 `8 X# i/ n1 a, Y0 M
数据库软件:1 l" [& E, X( |" i
Navicat Premium+ z* F7 n5 }7 F. Z* q0 {
SQLiteSpy,PowerBuilder
- n  Y/ K! I  h/ e* MSQLite Expert Professional
) X) P6 Q; g  d) h8 J4 s软件:
) C/ A5 E4 ~5 @1 _# }MDict,MdxBuilder: http://www.octopus-studio.com/download.cn.htm  X. F+ h( T* }
0 T9 ~  T6 \# \; S% }+ n; S' ]+ V
文本编辑器类:Notepad, Notepad++, EmEditor, UltraEdit, EditPlus, " {! {& D( A, _4 |' H
Replace Pioneer http://zhidao.baidu.com/link?url ... KEcUNfmzOo7nLH8BSNq& A& ~" c7 Q' D8 h
Raptor 3 http://softfie.com/software/hacktool-raptor.html
9 z0 v) D6 ?5 B; Bawk 4 Windows :http://sourceforge.net/projects/ ... -1-bin.zip/download$ e/ P1 \9 Q. X6 J$ n4 Y
; {# s( U0 ~: j7 k
Microft Office:Word, Excel, Access
. S. x" d  E) _! f- aAdobe: Adobe Director (某些光盘是用Macromedia软件做的,用这个可以提取语音),Adobe Acrobat Pro
- j, v) E: U! h# ]OCR:ABBYY FineReader
; }5 e" T/ g5 h4 I( B6 ]% o1 ^DWS: Tlex' D6 [# m; ~1 y' V( N
浏览器:Firefox, Chrome$ k% S- P( J% `1 p0 T

. f2 y$ Z% ?6 Z. a5 N* f$ y, G- e解压缩软件
3 L2 I9 S* e9 B5 @
. Q4 q6 Q2 S1 o3 d5 v8 V
( j' U' b7 S) B& l; I6 {: s离线下载类:
) M* [3 B/ F% _3 x/ O  y- swget, Teleport Pro, OfflineExplorer/ M1 f; e0 G# t0 i0 F
其他
2 j  ~" t0 P) F% }2 QFiddler 2, . t; m$ v- R( g0 _. u0 [% V
SQLiteSpy
! m- f! K  o+ h) y( n" Pyhssdl的GetDict2.6
+ K  G  N  l& V% p  h# u2 y8 XAudioTranscoder
% C# D) I% B4 b& c0 x0 S按键精灵
+ x8 O, Y2 n5 x/ yTvangeste / dictzip-win32
( J/ y7 N0 B+ m: d% O& G9 jhttps://github.com/Tvangeste/dictzip-win32/releases/
' w3 C5 \% {/ M; T* }
, E7 v7 v/ u& @/ M+ [dsl相关软件:
" h+ ]5 w* j7 e$ j- ]" f( GDSLGD4 F+ m) ]) o5 U

& c/ @% e7 b3 m有参考价值的技术(讨论)贴:( E5 k( Z, D8 \
0. superfan89# }+ v8 e) G! h5 I
[英汉-汉英] 21世纪大英汉词典&新汉英大词典【11/8/1更新】: https://www.pdawiki.com/forum/thread-7022-1-1.html, 帖子附件有ydDumper源代码! m0 U9 K9 m' _  y+ Q: n/ x
https://github.com/superfan89/IDMSKconv IDMSKconv源码
8 l1 V" y3 h$ W7 P" Q" xhttp://dicwizard.jp/jamming_ug.html$ J/ |; E( M$ O: `
https://www.pdawiki.com/forum/fo ... ctionary&page=3 63楼
; K" B5 C0 K& W" X9 t* \: O
% A5 W5 G! h9 `3 S& E& x* B1. chigre0 \' @% |* C: w' I
【直播完成】一个在线词典的离线MDX化制作[2012-11-29]:https://www.pdawiki.com/forum/thread-10260-1-1.html
9 n  {0 m+ K% N! t( t: M2 L: W1 V各种格式词典数据转TXT文本的工具软件(.BGL .LSD .LD2 .MDX STARDICT) https://www.pdawiki.com/forum/thread-10267-1-1.html7 J3 S: |- Y: X; F+ D7 J& R
[其他语种] Z意汉汉意词典转制效果: https://www.pdawiki.com/forum/thread-10796-1-1.html
/ z  B8 R+ L6 D5 n
! v, |/ m; F% ~8 H* {- g; r% t2. Hugh
, L$ z" e$ R$ h( q0 r) d  M【图文】手把手教你[转换]+[排版] MDX格式词库: https://www.pdawiki.com/forum/thread-10689-1-1.html
6 x" m5 R+ F' I
4 Y! V9 r3 `: @4 j+ u* M3. ldlcau1 c$ E6 b3 G- |' f: i
mdict版制作方法和常用工具: https://www.pdawiki.com/forum/thread-899-1-1.html3 n6 B; c2 o- N6 M6 Q; k, C$ M# o
/ U" A, H6 t& E
4. Oeasy: L8 M* k3 _2 D- M3 |" |5 O. ?
【2013.07.06】如何利用Microsoft Word排版制作.mdx? : https://www.pdawiki.com/forum/thread-10801-1-1.html5 n- K- A! g, r1 P, b' d+ R6 u' s: L
- b% W+ P3 ^" D/ H$ d
5. jjcizi2 L# d: n4 `$ S& k& q5 h0 T5 ]
[BlueDict] 一种把Excel转换为MDX的方法: https://www.pdawiki.com/forum/thread-9600-1-1.html% G0 H4 u3 c( V& k) o" V
8 T+ H/ d) o- Z
6. sunsmile235 d) F7 o( n4 S1 c" g& J
汉英词典的汉字显示问题: https://www.pdawiki.com/forum/thread-10809-1-1.html! e2 V- _: \8 C0 _
vba如何正确地输出UTF-8编码文件: https://www.pdawiki.com/forum/thread-10832-1-1.html
1 A( I( o7 H: R. b3 d! A
0 x0 t! V* B3 P4 h7. sjn01
' [4 B: O1 Y: w# j3 g求助,能否将Collins COBUILD 高阶英汉词典做成MDX?:https://www.pdawiki.com/forum/thread-6626-1-1.html
% e$ y7 z" E  ]
* l& M2 H3 z* [8. 惟吾无为9 J* i! X( Y  \9 k' h& d. i
linux下制作离线百度百科的思路(含成品): https://www.pdawiki.com/forum/thread-9256-1-1.html7 R4 W8 L9 y: k1 S, x& e
+ ^. A0 H2 h/ }2 j& L3 G) B
9. freegut/ x: H- i4 ^$ a$ L
分享Lingvo到MDict的转换经验: https://www.pdawiki.com/forum/thread-5386-1-1.html9 l2 `! D5 W. R

/ k6 Q/ s7 [* N' Q# I3 y8. zhu1234
. k0 {8 }# G. W, y, g8 K9 xMdx制作流程: https://www.pdawiki.com/forum/thread-9440-1-1.html
, Q  \* o# R( }0 [/ @
, [4 C( c+ {2 i9. 发哥
( a5 V. _6 v; G7 e9 P' X& z[英-英] ◆Dictionary of American Slang and Colloquial Expressions【20081222】:https://www.pdawiki.com/forum/fo ... ighlight=pdf%2Bword 8楼有pdf到html的经验。: S3 ?. P, Q4 r0 B2 y
0 v2 M3 ^' A* _2 Z. E; |3 }* l( f3 E1 n
10. FHYVUCBRUG , l8 {. |- x3 q
https://www.pdawiki.com/forum/thread-10617-9-1.html 第219、220、222、224楼。网盘有ConvToSpx.py/ Q1 _, N) ]6 [& A
" J' U" C2 }% o+ G0 M: I
11. 手把手教你转换辞典
- Z( O7 ~% f8 e  C: T4 a& r& K5 v4 z2 uhttp://bbs.emagic.org.cn/forum.p ... ntable&tid=5278
. Z2 D. \( ?$ \* U1 w6 I: Dhttp://www31.ocn.ne.jp/~h_ishida/scripts.html
/ i) e: }/ F) U0 b) }2 v; f7 \: v8 I
- X, g) T. q8 l( |4 u
--" T$ F4 n/ \- K+ u
http://blog.yeshj.com/luodean/
7 E! p+ x& ?; G- O5 M老马的原创空间:http://www.comicer.com/stronghorse/index.htm
% M! j9 H  X6 V  d) }3 W) i. N---8 O# z& c! y$ O
1.  Ultra Edit中如何删除包含特定内容的行?7 r" l5 x! R# D* e  O0 I
如某文件中有些行含有特定内容PTTAddress$ k& Y0 K  ]8 H% D. @6 N. |) r8 H
a. 使用替换功能,勾选正则表达式(Regular Expressions),替换内容为%*PTTAddress*^p,替换为为空;- Q" _0 e" T' y( h( t3 E3 k/ t
b. 删除空行,使用替换功能,替换内容为^r^n^r^n,替换为为^r^n;9 t& w# |" `0 J; I2 z; z, `
a. 使用搜索功能,勾选列出所含内容的行(List Lines Containing Characters),搜索内容为PTTAddress;0 [' I2 L7 J: L8 y. Z# h0 S' ^1 `
b. 在搜索结果中选择拷贝到粘贴板;  y/ `  [( ~: h4 O
c. 新建一空白文件,然后ctrl+v。

; k& E. b. L+ ~: @( i0 V& ]" X1 C$ j/ [% [, j
2. 使用wget如何登录后再下载0 V9 q5 ]: Q" {4 W/ ~' q( S: O( j$ ^
http://tilt.lib.tsinghua.edu.cn/node/213% Q) ?6 r0 ~# r1 `

6 y3 H" I# W* u+ v# ]! M3. 如何批量修改文件后缀名?* b4 n5 S/ w1 W6 C, V1 k6 N. T
http://zhidao.baidu.com/question/423790075.html
6 C) o5 i" q5 \, n
$ E" S) ]3 G7 @; {$ R4. 如何把多个文本文档合并成一个
/ S( Q6 d0 C/ X3 Khttp://zhidao.baidu.com/question/172524472.html( V" w) W/ g+ u, d+ o! [& M

( p5 ~) K/ a1 Y4 d2 U5. EPWING转txt
, v- t4 x3 L' Z- khttp://coffeejp.com/bbs/thread-170502-1-1.html( ^- K, S4 f+ \2 z! V) H1 }9 T
另:数千部日文小说和EBwin字典网盘分享 http://www.douban.com/group/topic/26642847/ - W5 F/ \6 t8 A8 q
http://www.coffeejp.com/bbs/forum-22-1.html$ k  V$ w) l0 x9 G
7 S0 b; I  f/ W. E! u. G/ v# W
6. bgl2StarDict. @3 O! `0 \" q' T$ W( J
http://code.google.com/p/stardict-3/wiki/ConvertBabylon6 C# l: z' B% M& ]# ~
* u7 X& L5 O* w  d
7. Lingoes灵格斯电子词典LD2(LDF)文件单词提取器# h2 B1 Y- P+ C( j8 n/ f
http://code.google.com/p/lingoes-extractor/
/ M: X3 A2 u3 E/ Y-4 ]. O/ y( X+ V! z
https://github.com/windylea/lingoes-converter
/ ^& k/ P2 U# {
( ^% _' z( s* D' F8. lsd 2 dsl
' ?4 e1 P" a+ y  Q6 ghttp://alabaxblog.info/2013/02/lsd-to-dsl-mass/
0 E, _1 P& ?" `! L* Whttp://www.windylea.com/blog/201 ... or-abbyy-lingvo-x5/
% Q1 F$ d% o& Q- U8 b( }  `
5 a. a$ d' ?3 O4 q4 r- a" W  Q9. An Analysis of MDX/MDD File Format$ l9 {- b+ ~2 L1 S2 X
https://bitbucket.org/xwang/mdict-analysis* V, [3 k/ D8 o! a& f2 `
http://m.newsmth.net/article/LinuxDev/56948?p=1" C/ D+ P+ a9 Z; G; p
http://mdict.codeplex.com/
+ U' \/ O- a$ ]' Z; t6 M, e  T6 Y' P! K3 V' c1 F/ W: H
10.
" K( S" T$ y' e* t% rhttp://hanzisearcher.cnblogs.com/7 a, d. _1 U. s6 v" y

; r4 ^# Q- o% m6 d- s& |: Y11. RegEx Dotext 1.0
9 j7 w+ K" `8 Zmdx制作必备:RegEx Dotext 1.0,可合并词条,提取信息等
) j0 U! ^  `/ [4 w% D  f. d8 b! Uhttps://pdawiki.com/forum/thread-11430-1-1.html" G6 R$ h5 S1 P3 p5 L$ J

. v0 S1 ?6 b; m% o- H% H3 j  V! {12. awk+wget实现批下载
/ [' \( Q( l6 ]3 Z0 L2 zhttp://blog.sina.com.cn/s/blog_4a1f59bf0100nifm.html' k9 @9 w9 ^+ j  o/ W% ?. ^; g0 V

: `0 S' C! N9 p' X8 K  y2 x" z, ~13. 【awk学习】gawk+wget+grep写的小爬虫
9 J7 M2 g# F9 I* V4 f: F, ]http://bbs.byr.cn/#!article/Linux/1042636 h9 J4 k/ A4 k2 c* S! n

, Q, k& e! K2 `* o5 F14. wget批量下载文件后,如何重命名!
) a* z  N' v3 t. t% yhttp://www.linuxsir.org/bbs/thread321272.html; Y& w  N! S4 G% r* e: F
; e3 }7 ?- H$ t. T$ Y2 \, t7 L
15. http://www.regexlab.com/7 N  @+ ^4 M0 U8 J

) F; m2 P2 x; V- P) j16. EBDump
5 o# O" K6 Z7 N" I4 |/ L5 V; lhttp://www31.ocn.ne.jp/~h_ishida/EBDump.html
5 ~3 f( C5 [) ~( U: W5 Shttp://www31.ocn.ne.jp/~h_ishida/EBDump/EBDump.html& o6 Z3 ?- z2 ^) d+ Y$ Y6 i
3 E& D3 e1 q& J/ E$ Z2 _1 Z6 T
17. Python抓取网页&批量下载文件方法初探(正则表达式+BeautifulSoup)2 h% q) V. e. x- v
http://www.360doc.com/content/13/0929/20/11729272_318036381.shtml0 E3 g: j& O  X& n5 h$ b. O4 j, T

& q& H' p; x0 S  y18. [转]用python爬虫抓站的一些技巧总结
4 f% R4 \, w5 J8 i/ ?0 v5 E- [http://hi.baidu.com/txcbg/item/9b10b9562c275b9408be176a$ |$ |: t! `5 \
% Q0 @) ?. {5 Q) d3 c5 f+ ^
19. Python爬虫入门教程2 v. E' X. t) F1 Q" B
http://blog.csdn.net/column/details/why-bug.html
/ o8 ^$ y: y- P+ m# _/ l4 ?
$ `7 B  @8 Y( U3 `, D=========
7 X8 H! O5 d$ A6 Q# |& U7 G$ WEPWING相关:
+ ^( L5 ?/ J" }* N: _9 F/ _http://hp.vector.co.jp/authors/VA021723/dessed/: B0 T- w; ^3 ^$ j% ?! L% n
+ c% @1 L0 W6 g" s

评分

2

查看全部评分

本帖被以下淘专辑推荐:

该用户从未签到

发表于 2014-6-2 11:26:50 | 显示全部楼层
本帖最后由 meigen 于 2014-10-7 01:45 编辑 / q7 U7 P7 V: K8 O! i& G
7 y1 f4 z- C' \" H
提取Epwing词典图片的java代码
8 Z3 N6 }! s: U! x8 q8 W$ U+ j/ YEpwing的图片分为两种, 一种是彩图(カラー図版)一种是单色图(モノクロ), 两种图片格式不同需要分别分析+ g' `! f$ p7 j3 `
首先是彩图3 ], P. O- l( S% |
格式说明:每张图片以“data”(64 61 74 61)为起点标志,data后面四位是该图片的数据大小,比如“6B E3 00 00”表示这个图片大小是58219字节;后面是数据部分,要提取的内容就是这个" V- O0 Y( s/ I0 W, C
提取有两种情况,一种是先用ebDump导出txt格式,然后用txt来提取,一种是直接用HONMON文件提取,省去了中间步骤
& R% H4 v) q. m* c. B9 [& J先介绍用ebdump导出txt格式然后提取彩图
' x0 K) N4 ^$ l3 J, A# v, O
  1. final static char[] DIGITS = {
    , Y  E8 b! i5 o3 I: G
  2.     '0' , '1' , '2' , '3' , '4' , '5' , '6' , '7' ,9 c7 {6 o9 C! t2 z7 Z9 f
  3.     '8' , '9' , 'A' , 'B' , 'C' , 'D' , 'E' , 'F'
    4 _6 G+ m) f6 T3 N5 L5 m
  4. };: G. a9 M" O( T' ~/ a% Y
  5. public static String toHex(int i) {$ \3 c! J) J  I% w& `5 c+ ]
  6.         char[] buf = {'0', '0', '0', '0', '0', '0', '0', '0'};1 S5 d2 r2 i3 G  A7 Y4 `
  7.         int charPos = 8;
    ! e9 G! U7 ]: |) d. I. s' w
  8.         int mask = 0xf;
    8 i* S* r3 x( B6 J9 d' e0 A
  9.         do {: `7 }0 m  q( m
  10.             buf[--charPos] = digits[i & mask];' e: F. K: B, w7 L
  11.             i >>>= 4;
    ' L& d' [5 [- p2 ], G9 J
  12.         } while (i != 0);
    $ e  D8 S6 I: T1 d
  13.         if(charPos > 4) charPos = 4;  y* W' _+ y/ a" p5 l( O
  14.         return new String(buf, charPos, (8 - charPos));
    5 Z1 N* z' a/ |& o" q
  15. }
    ' ~/ Q1 I, j9 r4 L3 s" N$ P8 X
  16. static void getColorPic(String f, String path) {
    * L. s. B3 S- ^: I0 b
  17.     try {6 S* J. _  }/ Y/ _, W
  18.         BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(f), "Shift_JIS"));
    ; ?% `) ?/ v* R
  19.         OutputStream out = null;
    7 ?# S: E8 p+ E
  20.         String line = "";, D& U7 B/ L8 P3 P$ e+ n/ c9 g- x
  21.         String block = "";
    ! r( C; [% l: n( p/ a
  22.         byte[] bs = new byte[2048];
    ) E- t- ?! ?; P9 {' _8 w, P
  23.         int idx = 0;* m( S1 X# @- |$ r$ j. V% \
  24.         if (!path.endsWith("/")) path += "/";
    ! I6 X/ q" v* _1 u; b$ ]
  25.         File fl = new File(path);
    : i/ i9 u1 h0 q, Q
  26.         if(!fl.exists()) fl.mkdirs();
    , s# L2 b4 C' P+ P5 v
  27.         while (((line = reader.readLine()) != null)) {  I, R; H  x$ A1 x8 [
  28.             if (line.startsWith("block")) {
    : |& `5 [* F( G) K
  29.                 block = line.substring(6, line.indexOf("("));2 a' \5 _& r+ Q- L) d# E8 }3 C2 h8 I
  30.                 System.out.println(block);
    , O8 p" \4 h- g) T& u+ m- I
  31.                 idx = 0;
    ! @3 w& D) v% `5 ~
  32.             }
    9 j$ z* u% P9 M# |) T
  33.             if (line.startsWith("0")) {
    7 b4 z- w% ~( D. F/ i; c
  34.                 for(int i=0; i<16; i++) {
    - k3 q7 W) B% |3 e9 Y
  35.                     int a = CHARS.indexOf(line.charAt(5+3*i));
    7 U& S2 z5 L# W4 C, H; _+ {- m  P
  36.                     int b = CHARS.indexOf(line.charAt(6+3*i));
    4 N/ I4 ]# e. S8 x: X
  37.                     bs[idx++] = (byte) (a << 4 | b);
    5 D6 Z2 g; J! @5 }' H: V, n" O
  38.                 }
    5 b) A- U" @- I' I! T
  39.             }4 h( O! `8 f' T# x& n2 |! s8 ~5 q
  40.             int dts = -1;
    / I, E9 E* q4 m1 T5 e) U
  41.             int ws = 0;, V3 w9 [9 X( T4 q
  42.             if (idx == 2048) {2 f5 u2 T7 S9 u0 }% `
  43.                 for (int i=0; i<2044; i++) {
    ! x$ |( A) r, G
  44.                     if (bs[i]==0x64 && bs[i+1]==0x61 && bs[i+2]==0x74 && bs[i+3]==0x61) {
    - @' W" K0 p/ v0 h& j5 K
  45.                         dts = i;0 N8 W9 a  F% l  @% _( K" ~1 q
  46.                     }6 R5 |( w$ P9 o
  47.                 }
    8 p9 Z- k, W3 z3 ]6 v
  48.                 if (dts != -1) {
    1 A' @+ H: V) S1 j- ?1 m
  49.                     if (out != null) {! Y8 h5 ~$ Y6 j
  50.                         out.write(bs, 0, dts);
    ! h' i( f! n# S3 X$ }4 P
  51.                         out.flush();
    5 Y! k9 i) z8 d& u( p
  52.                         out.close();
    + p8 g* W' E- c4 ]+ p9 N
  53.                     }
    & t$ S, K* l" p! ]- H$ }* V& @
  54.                     out = new BufferedOutputStream(new FileOutputStream(path+block+toHex(dts)+".bmp"));. M/ o6 p3 {: B) m% y  `
  55.                     if(dts > 2040) ws = dts-2040;- _9 g) t4 D! S% o. k
  56.                     else out.write(bs, dts + 8, 2040 - dts);
    $ B, n; q- _) I" P
  57.                 } else if (out != null) out.write(bs, ws, 2048 - ws);
    + M$ o5 f# Q4 ^, o5 m
  58.                 idx = 0;9 B& P  g/ M& u* u/ J0 }8 r
  59.             }, r; D$ K0 ~: `# C3 f+ t& D
  60.         }3 x! M5 M5 {' J% ]3 `5 v1 p6 u5 F
  61.         reader.close();
    7 ^1 h' d8 ]  |3 G/ a: f% L& F' A
  62.         if (out != null) {& n1 {7 K( e, F* s! m
  63.             out.flush();8 |- C: z& }' I: E
  64.             out.close();  |6 I; _& `& u  i( g6 q% e
  65.         }
    ) M& M1 n4 w9 g7 \) N1 d, `# Q+ I2 @5 H
  66.     } catch (Exception e) {
    $ j9 D" H/ _. ~% H
  67.         e.printStackTrace();
    : o( q% e' s" s) ]" B0 G. n$ j) n
  68.     }, M# ?1 p. I1 U+ @4 ^4 G
  69. }
复制代码
getColorPic(String f, String path) 参数说明: f是图片导出的txt文件, path是保存图片的路径

点评

请问,还有 EPWING 转 MDX 的 工具 吗?  发表于 2018-9-6 14:32

评分

1

查看全部评分

该用户从未签到

发表于 2014-6-2 17:03:11 | 显示全部楼层
本帖最后由 meigen 于 2014-10-10 20:19 编辑 1 \; v' B* p' Z/ m
  a" m# F" z( @- s% V7 L- W) r
接14楼,单色图的提取稍微麻烦些,他里面只有数据部分而缺少文件头,这个是比较头疼的事情. P$ c4 G9 m" m0 w: V5 U# J8 e
先用ebdump提取出词典文本(本文),然后在里面获取单色图的代码(<1F44>开头,<1F64>结尾)
8 M& m6 @# \. M8 X可以看到
2 t$ Z1 f6 s7 ?! A/ X1 a# l+ N3 i<1F44><0001><w=200,h=256>xxx<1F64>[0001A4BD:0027]
  Q7 ~% k) j$ c. S这里的w=200,h=256表示图片的尺寸,这个参数后面会用到
; U, }9 L8 W  k; q3 E/ v3 f; W然后<1F64>后面的这一段[0001A4BD:0027]就是单色图数据地址了
6 l! J6 m) z. Z2 o- |0 {2 P  }" Z先写个Demo 把所有地址都提取出来,顺便排一下序,去掉重复:- I; A4 P) P2 S6 D4 |. A& E2 i6 ^
  1. static void getMonoTag(String f) {/ g& K/ X4 V2 F& G- m% c
  2.     try {4 T$ o7 c& G* l9 \
  3.         BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(f+".txt"), "Shift_JIS"));
    3 J. C# f2 |( C
  4.         BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(f+".mono.txt"), "UTF-8"));9 o6 D$ J$ J8 y+ q3 v# |
  5.         String line;
    - Y9 Z% o. I" v8 _( y5 k% f! K4 b( f
  6.         ArrayList<String> monos = new ArrayList<String>();9 m1 Y; a" L* f2 r7 M8 q/ e
  7.         while (((line = reader.readLine()) != null)) {0 u2 v2 y) K) A, p" I4 a& ?
  8.             while (line.contains("<1F64>")) {, }7 \/ c. }2 s6 L8 B" f
  9.                 line = line.substring(line.indexOf("<1F64>") + 6);, F- w" e4 d  d. Z
  10.                 monos.add(line.substring(0, 15));
    - }6 k. S2 P5 ~! r' j" k# h
  11.             }
    . Y$ ]6 U/ B& P- J" C. x" j
  12.         }
    - P6 @9 s: @3 t3 o
  13.         reader.close();" z  N7 _: j2 R. m% f; ?* ^
  14.         String[] monoa = new String[monos.size()];- a2 ^# w/ E( f
  15.         monos.toArray(monoa);
    6 L5 h, ~4 s. Q, L% M' x
  16.         Arrays.sort(monoa);0 J4 q$ q  z- c) h4 O4 [) K
  17.         String last = "";
    8 F8 ]7 i0 y5 n- M  E8 T) G8 l
  18.         for (int i=0; i<monoa.length; i++) {2 p" S# b& R" w
  19.             if (!monoa[i].equals(last))& U) o  _8 Z! m1 q( c& _/ Y9 |
  20.                 writer.write(monoa[i] + "\r\n");
      u! X8 ~' }% M/ ~& l- ]% A
  21.             last = monoa[i];+ Y( c0 A# f" r- o, L' q- \( E
  22.         }
    9 W# ~" E& r2 R5 x3 W
  23.         writer.close();
    " Y$ s0 g- t( ]1 D
  24.     } catch (Exception e) {$ Y+ z# L, Q* b" T
  25.         e.printStackTrace();
    ; ^7 ^- S8 I5 X0 s1 j
  26.     }1 k" x+ M- K5 U) K% m4 m1 Y
  27. }
复制代码
  A9 [7 m% o- s% A, G0 q, Q# q3 |
得到了一个.mono.txt的文件
$ q& Q: f3 H1 \& q$ u8 R5 R+ P4 u! T然后开始提取:5 G; J3 `: ^9 }! n7 @( O
上面有提到w=200,h=256这两个参数,不过epwing好像弄反了,200是高,256是宽。 - -
: u; s5 |. y# {- q4 Y' y; Q提取过程中需要手动加上图像的文件头,可自行百度bmp文件格式/ K: T. B- o5 J& S" q
  1. static final int WIDTH = 256;
    ; y7 E- }3 Y6 P9 w$ c3 Z
  2. static final int HEIGHT = 200;9 D/ h: t4 L0 g- |
  3. static final int WIDTH2 = 32;
    , Z6 ]( q3 M( a4 @/ E7 E
  4. static final int SIZE = WIDTH2 * HEIGHT;) g; ^4 j0 T/ q
  5. static final int FILE_LEN = SIZE + 62;
    8 i" K7 A9 Y1 Q
  6. static byte[] filehead = {0x42, 0x4d,
    9 h  s5 v$ j, N
  7.     (byte) (FILE_LEN & 0xff), (byte) ((FILE_LEN >> 8) & 0xff), (byte) ((FILE_LEN >> 16) & 0xff), (byte) ((FILE_LEN >> 24) & 0xff),
    & Z1 I( m/ P0 v' e$ D, n; ^+ ]/ m
  8.     0, 0, 0, 0, 0x3e, 0, 0, 0};
    5 J. u1 z: ]$ `: y3 Y
  9. static byte[] infohead = {0x28, 0, 0, 0,& k1 W( N; Z5 D+ O! ^/ G
  10.     (byte) (WIDTH & 0xff), (byte) ((WIDTH >> 8) & 0xff), (byte) ((WIDTH >> 16) & 0xff), (byte) ((WIDTH >> 24) & 0xff),
    % `6 l) ^& L& E# i
  11.     (byte) (HEIGHT & 0xff), (byte) ((HEIGHT >> 8) & 0xff), (byte) ((HEIGHT >> 16) & 0xff), (byte) ((HEIGHT >> 24) & 0xff),
    & h- g" J! o7 Z9 Y7 K" X+ I& V
  12.     1, 0, 1, 0, 0, 0, 0, 0,
    / {# v5 P- w2 k" F/ o% A5 ^+ P
  13.     (byte) (SIZE & 0xff), (byte) ((SIZE >> 8) & 0xff), (byte) ((SIZE >> 16) & 0xff), (byte) ((SIZE >> 24) & 0xff),* F" F* i& v3 K5 R4 d) H8 f, C
  14.     0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, -1, -1, -1, 0, 0, 0, 0, 0};
    / y# R+ R- S# l$ N  G1 W
  15. static void getMonoPic(String f, String m) {8 k1 Q5 e( x( v; J& Z; E' @
  16.     try {) L/ @/ H  h2 \$ h8 j
  17.         BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(f+".txt"), "Shift_JIS"));
    ! ?# m' Z* ]& `6 j) I7 V+ e
  18.         BufferedReader reader2 = new BufferedReader(new InputStreamReader(new FileInputStream(m+".txt"), "UTF-8"));$ R: d+ S7 P5 `9 z4 R/ ^
  19.         OutputStream out = null;
    8 Y+ a7 Q" b" Y6 ~
  20.         String line = "";
    ! T2 G0 r: W7 W+ U0 Q/ s/ f1 I, c
  21.         String line2 = reader2.readLine();
    ! J+ E; q& _2 @" b$ W' S. T9 Z
  22.         int block = 0;
    # `; e# C' |8 E" ^0 N
  23.         int block2 = Integer.parseInt(line2.substring(1, 9), 16);
    + y/ j  I1 f" [6 u! G
  24.         int offs = Integer.parseInt(line2.substring(10, 14), 16);
    " _: T0 A. z! [6 W( @! D
  25.         byte[] temp = new byte[2048];! ]' g3 G7 P8 t; f' c
  26.         byte[] data = new byte[WIDTH2 * HEIGHT];5 y) e* z+ B) F
  27.         int[] idxs = new int[WIDTH2 * HEIGHT];, r( B0 v1 _; s9 G  }( _$ S3 t
  28.         for (int i=0; i<HEIGHT; i++) {
    8 p) A% v8 s) C7 B
  29.             idxs[i * WIDTH2] = (HEIGHT - 1 - i) * WIDTH2;& T( f. T. i) i, r
  30.             for (int j=1; j<WIDTH2; j++)  a7 X! t6 r& i8 J6 U' {
  31.                 idxs[i * WIDTH2 + j] = idxs[i * WIDTH2 + j - 1] + 1;+ `! r3 J6 N" e
  32.         }( L* N; x& w: p2 F
  33.         int idx = 0;
    4 b4 W2 D2 ?: t- [2 y4 [9 d
  34.         int didx = 0;
    2 T- Y* c8 |1 m# H
  35.         while (((line = reader.readLine()) != null)) {
      B1 |5 ?' i$ N, i
  36.             if(line.startsWith("block")) {- G- P8 C' s+ Y- p8 A1 g+ l
  37.                 block = Integer.parseInt(line.substring(6, 11), 16);
    ' X0 C  c3 O  ^" E
  38.                 idx = 0;
    ; A6 W- \: C7 O3 X9 ]+ {3 E
  39.             }
    + o" w$ a, G  x& O/ B. U
  40.             if(line.startsWith("0")) {7 T" y7 Z4 w' c$ z; M7 P
  41.                 for(int i=0; i<16; i++) {. i9 A; X9 @3 {( i8 x  y
  42.                     int a = CHARS.indexOf(line.charAt(5+3*i));
    & V( M8 X% J. a" v( c
  43.                     int b = CHARS.indexOf(line.charAt(6+3*i));! E3 P2 i) I+ H: l: T4 D
  44.                     temp[idx++] = (byte) (a << 4 | b);
    4 V. Y7 m; O6 c. O( l/ K
  45.                 }
    4 q' a) t% t( [  ~2 G: c
  46.             }
    9 W, Z% K4 T9 m, J; X
  47.             if (idx == 2048) {- U; |7 W3 p; u2 y
  48.                 if(block < block2) continue;. V1 R) |' L/ b9 _; t7 l
  49.                 int start = offs;
    ! i. p7 m6 I$ ?! U+ V* {
  50.                 if(didx != 0) start = 0;
    . {' d0 D9 T4 o1 e" D/ R
  51.                 for(int i=0; i<2048; i++) {1 N, ]* Y7 w8 [
  52.                     if(i >= start)
    ) F; i& k1 Q4 p6 E, s' S5 e
  53.                         data[idxs[didx++]] = temp[i];6 O6 `& j- P2 @, q* ~" E
  54.                     if(didx == WIDTH2 * HEIGHT) {
    1 q6 @  `& r- i' x7 N' f, ^
  55.                         System.out.println(toHex(block2)+"."+toHex(offs));8 m  ?' s) ?7 t% t9 {
  56.                         out = new BufferedOutputStream(new FileOutputStream("pic/"+toHex(block2)+toHex(offs)+".bmp"));
      n8 A, V' v5 G$ X  t
  57.                         out.write(filehead);
    + i+ R* M6 x  ?6 M) q4 t; A
  58.                         out.write(infohead);0 |  u# Q+ v1 U6 E7 D9 T& s
  59.                         out.write(data);9 K  W! b! A" Y! {, s
  60.                         out.flush();
    * D( p+ p4 C- k+ N
  61.                         out.close();( C! I$ Y7 `; c# ^9 @
  62.                         line2 = reader2.readLine();
    $ G; n9 l$ c$ Y0 P1 i
  63.                         if(line2 == null || line2.equals("")) {
    - `% P/ ?% f* @1 @% e
  64.                             reader.close();9 W% Z2 }9 N3 @3 t. I% s# O+ _$ `
  65.                             reader2.close();$ f* l5 e2 _3 f1 ?- g
  66.                             return;# h5 W  B7 X/ x2 Y# s0 G! K. Q
  67.                         }/ f6 A. a& V0 }0 D& q4 z# U
  68.                         block2 = Integer.parseInt(line2.substring(1, 9), 16);* U: O/ k+ |* K7 _9 E) r+ ]
  69.                         offs = Integer.parseInt(line2.substring(10, 14), 16);
    " H1 [" }) k; j2 x3 Y& s
  70.                         didx = 0;
    " V5 V' O5 o4 F& x5 p
  71.                     }# ?# B: W7 _  J0 y8 F4 L' X* e, v
  72.                 }
    8 I$ ^# }# B% ~  |# Q
  73.                 idx = 0;
    - x5 }1 N: w* r( K* U9 n
  74.             }7 a6 J8 {* R4 ^& [* t7 Y
  75.         }( |1 Y, t, G' q8 q8 ?
  76.         reader.close();
    " g9 i. s/ B/ U6 R. X$ O$ l2 g
  77.         reader2.close();% S  l) g" L8 k- {' V9 t* ^# k. ]
  78.     } catch (Exception e) {3 `1 d- F: f0 }* ?! \3 A
  79.         e.printStackTrace();
    " P! k& H6 c0 G" y2 G
  80.     }
      _& x4 C4 H. q
  81. }
复制代码
9 I/ O2 x8 f/ Q' [# }6 M
待编辑...2 H9 g+ J$ B# s3 _5 i
# b; j4 _2 _$ J& h
回15楼:, O6 U/ U  T/ W
能把代码用附件形式上传么?顺便使用说明用英文。
  w& ~" V- d8 Q: b! ^4 ]- r
代码有一些要改动的地方, 我完善一下就传附件
/ N7 `7 @& W% S2 |3 O另外用英文说明这...{:11_336:}
/ w- [5 `2 `9 w6 y( J我先用中文注释一下, 然后再慢慢翻译

评分

1

查看全部评分

  • TA的每日心情
    开心
    2019-8-11 07:55
  • 签到天数: 606 天

    [LV.9]以坛为家II

    发表于 2013-8-25 17:56:54 来自手机 | 显示全部楼层
    楼主辛苦了。

    该用户从未签到

    发表于 2013-8-28 11:29:54 | 显示全部楼层

    该用户从未签到

    发表于 2013-10-23 12:56:25 | 显示全部楼层
    这帖子太好了。现在上的课正好跟html,jsp,sql有关,可以有针对性地学一学了~~

    该用户从未签到

    发表于 2013-10-24 09:37:16 | 显示全部楼层
    辛苦了!
  • TA的每日心情
    开心
    2021-1-11 09:04
  • 签到天数: 83 天

    [LV.6]常住居民II

    发表于 2013-11-1 23:10:03 | 显示全部楼层
    对我们这些没有软件基础的可咋整?

    该用户从未签到

    发表于 2013-11-3 10:47:35 | 显示全部楼层
    不懂,只知道怎么使用,仅以回帖表示赞同
  • TA的每日心情
    擦汗
    2025-3-22 09:30
  • 签到天数: 21 天

    [LV.4]偶尔看看III

    发表于 2013-11-7 08:29:45 | 显示全部楼层
    楼主辛苦了,谢谢分享

    该用户从未签到

     楼主| 发表于 2013-11-8 00:02:28 | 显示全部楼层
    高手们都歇了,或者对词典不感兴趣。8 O( ]* v0 x  Y! q
    其实目前新的词典资源,主要集中在iOS、Android应用上,一些数据dat啊,db啊,都有加密,要破解啊,技术含量很高噢。/ ~. G! X( U( D
    -: a  {- {5 Y, Y: m1 _# k
    一些扫描的词典,要做成pdf,基本就只有靠神人出手了。网络合作校对或录入?我从来不觉得这事儿靠谱,志同道合的、对同一语种同一词典感兴趣的人太少太少。慢慢等吧。{:5_214:} ' P8 b  g( \7 b

    该用户从未签到

    发表于 2013-11-11 10:58:55 | 显示全部楼层
    一直想制作啊,太复杂了,文科生一枚,看得我头晕。( g) O+ l& W1 F6 i& U% C$ b
    其实我只是想制作一个自己个人的词典,因为自己从事英语教学,有些单词讲解有自己的方式,要是加进去,以后备课就方便了。
  • TA的每日心情
    难过
    2023-11-26 08:44
  • 签到天数: 49 天

    [LV.5]常住居民I

    发表于 2014-1-21 18:03:13 | 显示全部楼层
    看看,学习!谢谢

    该用户从未签到

    发表于 2014-2-18 10:51:18 来自手机 | 显示全部楼层
    这个很赞!
    1 ^0 o, d$ d$ ]最近打算扒维基来着。

    该用户从未签到

    发表于 2014-6-1 17:32:34 | 显示全部楼层
    好贴收藏。

    该用户从未签到

     楼主| 发表于 2014-6-2 14:18:15 | 显示全部楼层
    meigen 发表于 2014-6-2 11:26 0 I5 p# d# Q3 s
    提取Epwing词典图片的java代码& P' y' h  }- e( j+ b. ?& k- T
    Epwing的图片分为两种, 一种是彩图(カラー図版)一种是单色图(モノクロ), 两 ...
    / ^$ X8 u' G( F7 t0 M- h( k
    {:5_227:} + |# _8 J, T. H) ]' x  n

    ; }0 r4 V& a/ i4 v  I论坛用了防转载插件还是什么的,复制代码的时候后边会加上一堆乱码。
    / j/ u' |) @) K1 [8 \. u能把代码用附件形式上传么?顺便使用说明用英文。. \5 ]& y6 @6 K. y
    辛苦辛苦~5 Q% u+ l/ y" y  o% }- S* ?

    该用户从未签到

     楼主| 发表于 2014-6-2 19:29:10 | 显示全部楼层
    本帖最后由 Oeasy 于 2014-6-2 19:31 编辑
    ( K' y5 W; j+ c1 F) Y4 c
    meigen 发表于 2014-6-2 17:03 5 z# y8 }# i* b
    接14楼, 单色图的提取稍微麻烦些, 他里面只有数据部分而缺少文件头, 这个是比较头疼的事情- H/ C1 r* G+ o4 [# g# @
    我们可以先到词 ...

    ' l4 @# \/ _- I$ U, [
    5 j0 D# D* p0 |$ G- _% f{:10_240:} . K; L+ O; B+ v3 O+ I# g2 f! K$ h

    ; w5 z) E- |8 U3 ?。。。。. a* B$ l+ F5 [0 n  D
    其实GoldenDict支持EPWING了,尚稍有瑕疵,但已然近乎完美,不敢要求更多,感谢Abs62大神。) G1 f3 s7 l2 u) p( k: z$ u3 [
    http://goldendict.org/forum/viewtopic.php?f=4&t=2922' V5 Q, b1 l( L4 o  B+ p$ K$ V
    http://goldendict.org/forum/view ... =2091&start=300
    ! X, }7 X, e3 B5 u不过能把EPWING转出文本 & 图片,制作为dsl、mdx等,进行个性化排版,这些啊,始终是让人愉悦和有成就感的事情。。。{:10_228:} 1 |! ~) p; N  D8 w

    ' O5 e/ R9 x3 m/ N9 @+ i

    该用户从未签到

    发表于 2014-6-8 18:42:15 | 显示全部楼层
    这个帖子太棒了!必须好好学习一下啊。
  • TA的每日心情
    奋斗
    2018-12-10 10:05
  • 签到天数: 19 天

    [LV.4]偶尔看看III

    发表于 2014-6-23 15:54:42 | 显示全部楼层
    几位大神都离开啊,只求不定期更新词库
  • TA的每日心情
    开心
    2021-5-6 12:15
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2014-7-31 20:23:48 | 显示全部楼层
    。。。长期学习阵地

    该用户从未签到

    发表于 2014-8-21 08:12:58 | 显示全部楼层
    文本编辑器:Editpad无论是对正则的支持还是替换的速度已经把EmEditor、Notepad++之流甩开几条街了。
    % V# A% r/ y6 S  g

    该用户从未签到

    发表于 2015-1-2 00:39:31 | 显示全部楼层
    其实几个程序员常用的文本编辑器功能都蛮强大的,ue功能最多,复杂,emediter不错,对中日韩字体支持最好
  • TA的每日心情
    开心
    2019-5-18 14:33
  • 签到天数: 12 天

    [LV.3]偶尔看看II

    发表于 2015-10-18 00:11:23 来自手机 | 显示全部楼层
    meigen 发表于 2014-6-2 17:03# _, K. ?3 p8 V8 ~) k
    接14楼,单色图的提取稍微麻烦些,他里面只有数据部分而缺少文件头,这个是比较头疼的事情
    7 x4 }% \* d$ i- N9 U先用ebdump提取 ...

    * R1 Q8 g6 x; ?4 k9 x- S好文,谢谢。

    该用户从未签到

    发表于 2016-1-30 21:11:09 | 显示全部楼层
    不懂,仅以回帖表示赞同
    您需要登录后才可以回帖 登录 | 免费注册

    本版积分规则

    小黑屋|手机版|Archiver|PDAWIKI |网站地图

    GMT+8, 2025-5-8 17:28 , Processed in 0.030946 second(s), 28 queries .

    Powered by Discuz! X3.4

    © 2001-2023 Discuz! Team.

    快速回复 返回顶部 返回列表